知识大全 Junit4功能介绍

Posted

篇首语:没有一贯的蔑视,又怎能不断地欣赏呢?本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Junit4功能介绍相关的知识,希望对你有一定的参考价值。

Junit4功能介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  JUnit 是JAVA语言事实上的标准测试库 JUnit 是三年以来最具里程碑意义的一次发布 它的新特性主要是针对JAVA 中的标记(annotation)来简化测试 而不是利用子类 反射或命名机制 本文将讲述如何使用JUnit 当前前提是你最好具有JUnit的使用经验.JUnit 由Kent Beck 和 Erich Gamma开发 几乎是JAVA开发最重要的第三方工具 正如Martin Fowler 所说 在软件开发领域 从来就没有如此少的代码起到了如此重要的作用 由于JUnit JAVA代码变得更健壮 更可靠 BUG也比以前更少 由于JUnit (由Smalltalk s的SUnit得来) 的出现 随后产生了许多xUnit的测试工具 如nUnit ( NET) pyUnit (Python) CppUnit (C++) dUnit (Delphi) 和其它不同平台及语言的测试相关的工具

  虽然JUnit也只是一个工具 但其产生的思想和技术却较其架构更意义重大 单元测试 测试先行的编程方式 测试驱动的开发方式 并非必须由JUNIT实现 也不一定要用SWing实现GUI界面 JUNIT最近的一次更新是在三年前 但它比其它大多数有BUG的框架都要健壮 更重要的是 JAVA一直在改进 现在JAVA支持泛型 枚举 可变长度参数 以及标记语言(开创了开发可重用框架的新局面)

  JUnit s的停滞不前使得那些想要变革的开发人员换其它测试工具.挑战者有Bill Venners的Artima SuiteRunner和Cedric Beust的TestNG.这些工具库虽然有值得推荐的功能 但没有任何一款的地位能与JUNIT相比 没有任何一款工具被其它业界产品如Ant Maven Eclipse广泛支持.因此Beck 和Gamma双开始利用JAVA 的新特性来开发新版的JUNIT 目的是利用JAVA 中的标记特性使得单元测试开发更容易 Beck说 JUNIT 的主要目的是通过简化JUNIT的使用鼓励更多的开发人员写更多的测试 虽然会与以前的版本兼容 但JUNIT 与从JUNIT 就开始的版本相比会有一个非常大的变化.

  注意: 修改基本框架是一把双刃剑 虽然JUNIT 的目的是清晰的 但细节仍有许多不同 因此本文只是一个简单的介绍 并不是最终文档.

  测试方法

  以前所有版本的JUNIT都使用命名机制和反射来定位测试 下面的代码测试 + =

  import junit framework TestCase; public class AdditionTest extends TestCase private int x = ; private int y = ; public void testAddition() int z = x + y; assertEquals( z);

  而在JUNIT 中 测试方法由 @Test 标记说明 如下

  import junit Test; import junit framework TestCase; public class AdditionTest extends TestCase private int x = ; private int y = ; @Test public void testAddition() int z = x + y; assertEquals( z);         使用标记的好处是你不用将所有测试方法命名为 testFoo() testBar()等等以 test\\ 开头的方法 下面的方法也同样可以工作 import junit Test; import junit framework TestCase; public class AdditionTest extends TestCase private int x = ; private int y = ; @Test public void additionTest() int z = x + y; assertEquals( z);

  下面的代码也同样正确

  import junit Test; import junit framework TestCase; public class AdditionTest extends TestCase private int x = ; private int y = ; @Test public void addition() int z = x + y; assertEquals( z);

  这种命名机制最大的优点是更适合你的待测试类或方法名称 例如 你可以使用ntains()测试 ntains() ;使用ListTest addAll()测试 List add()等等.

  TestCase 还可以继续使用 但你没有必须再扩展为子类 只要你声明了@Test 你可以将测试方法放在任何类中 当然如要访问assert等方法 你必须要引用junit Assert类 如下

  import junit Assert; public class AdditionTest private int x = ; private int y = ; @Test public void addition() int z = x + y; Assert assertEquals( z);

  你也可以使用JDK 中的新特性(static import)使得跟以前版本一样简单

  import static junit Assert assertEquals; public class AdditionTest private int x = ; private int y = ; @Test public void addition() int z = x + y; assertEquals( z);

  这种方法测试受保护的方法非常容易 因为你可以在测试类中继承有受保护方法的类.

  SetUp 和TearDown

  JUnit 中 test runners 会在每个测试之前自动调用 setUp()方法 此方法主要用于初始化变量 打开日志 重置环境变量等 下面是XOM s XSLTransformTest中的 setUp()方法

  protected void setUp() System setErr(new PrintStream(new ByteArrayOutputStream())); inputDir = new File( data ); inputDir = new File(inputDir xslt ); inputDir = new File(inputDir input );

  在JUnit 中 你仍然可以在每个测试前初始化变量和配置环境 然而 这些操作可以不用在Setup()中完成 你可以在初始化方法前面添加 @Beforer 来表示 如下

  @Before protected void initialize() System setErr(new PrintStream(new ByteArrayOutputStream())); inputDir = new File( data ); inputDir = new File(inputDir xslt ); inputDir = new File(inputDir input );

  你也可以有多个方法标记有@Before 所有方法都会在每个测试之前执行

  @Before protected void findTestDataDirectory() inputDir = new File( data ); inputDir = new File(inputDir xslt ); inputDir = new File(inputDir input ); @Before protected void redirectStderr() System setErr(new PrintStream(new ByteArrayOutputStream()));

  清除环境与JUNIT 差不多 在JUNIT 中使用 tearDown()方法 下面的代码是结束测试时回收内存

  protected void tearDown() doc = null; System gc();

  在JUnit 中 你还可以使用 @After 标记来说明

  @After protected void disposeDocument() doc = null; System gc();

  与 @Before一样 你也可以有多个标记有 @After的清除方法 每个都会在执行完每个测试后执行

cha138/Article/program/Java/ky/201311/27946

相关参考

知识大全 探索JUnit 4.4 新特性[3]

探索JUnit4.4新特性[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  清单assert

知识大全 探索JUnit 4.4 新特性[2]

探索JUnit4.4新特性[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  优点assert

知识大全 探索JUnit 4.4 新特性[8]

探索JUnit4.4新特性[8]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  清单理论机制举例

知识大全 探索JUnit 4.4 新特性[7]

探索JUnit4.4新特性[7]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  清单英镑Poun

知识大全 探索JUnit 4.4 新特性[6]

探索JUnit4.4新特性[6]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  TDD的优点  

知识大全 探索JUnit 4.4 新特性[5]

探索JUnit4.4新特性[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  清单假设机制优点

知识大全 探索JUnit 4.4 新特性[4]

探索JUnit4.4新特性[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  假设机制(Ass

知识大全 探索JUnit 4.4 新特性[1]

探索JUnit4.4新特性[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文通过理论分析和

知识大全 .NET Reflector新功能介绍

.NETReflector新功能介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Reflec

知识大全 Oracle数据库高级复制功能介绍

Oracle数据库高级复制功能介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle数