JUnit测试框架使用介绍(下)

发表于:2009-5-07 15:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51cto博客

  JUnit和异常

  对于测试而言,下面两种异常是我们可能会感兴趣的:

  1.从测试代码抛出的可预测异常。

  2.由于某个模块(或代码)发生严重错误,而抛出的不可预测异常。

  任何对assertTrue(true)的使用都应该被翻译为“我预期控制流程会达到这个地方”。通常而言,对于方法中每个被期望的异常,你都应该写一个专门的测试来确认该方法在应该抛出异常的时候确实会抛出异常。如上例中testEmpty()测试方法的设计。

  对于处于出乎意料的异常,你最好简单的改变你的测试方法的声明让它能抛出可能的异常。JUnit框架可以捕获任何异常,并且把它报告为一个错误,这些都不需要你的参与。

  Per-method的Setup和Tear-down

  对于重复出现在各个单元测试中的运行环境,可以集中加以管理,可以在继承TestCase之后,重新定义setUp()与tearDown()方法,将数个单元测试所需要的运行环境在setUp()中创建,并在tearDown()中销毁。

  JUnit的TestCase基类提供两个方法供你改写,分别用于环境的建立和清理:

  protected void setup();

  protected void teardown();

  测试类MathToolTest2:

packagecom.zj.c01;
importjunit.framework.TestCase;
 
publicclassNumberToolTest2extendsTestCase {
   privateint[]arr;
 
   publicNumberToolTest2(String name) {
      super(name);
   }
 
   protectedvoidsetUp()throwsException {
      super.setUp();
      arr=newint[] { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5 };
   }
 
   protectedvoidtearDown()throwsException {
      super.tearDown();
      arr=null;
   }
 
   publicvoidtestMax() {
      assertEquals(5, NumberTool.getMax(arr));
   }
 
   publicvoidtestMin() {
      assertEquals(-5, NumberTool.getMin(arr));
   }
}

  TestSuite

  每一个定义好的TestCase,都使用TestRunner来运行测试,事实上TestRunner并不直接运行TestCase上的单元方法,而是通过TestSuite ,TestSuite可以将数个TestCase组合在一起。

  在上面的例子中,并没有看到任何的TestSuite,这是因为TestRunner的run()方法中会建立TestSuite:

staticpublicvoidrun(Class testClass) {
   run(newTestSuite(testClass));
}

  在这个TestSuite的建构式中,会使用反射自动找出testXXX()方法,并加入待执行的测试方法, TestRunner的run()方法中会去执行TestSuite上的run()方法,然后TestSuite会将之委托给TestCase上的 run()方法,而该run()方法中执行每一个testXXX()方法。

  如果你只想执行某TestCase中的部分测试函数,则可自己构建TestSuite,下面的代码针对NumberToolTest中的两个测试函数testSimple()和testNegitave()进行测试。

packagecom.zj.c02;
importcom.zj.c01.NumberToolTest;
importjunit.framework.Test;
importjunit.framework.TestSuite;
 
publicclassPartTest {
   publicstaticTest suite() {
      TestSuite suite =newTestSuite();
      suite.addTest(newNumberToolTest("testSimple"));
      suite.addTest(newNumberToolTest("testNegitave"));
      returnsuite;
   }
}

  使用Eclipse-Run As JUnit Test

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号