您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
JUnit及其相关的单元测试技术
作者:网络转载 发布时间:[ 2013/8/2 10:40:17 ] 推荐标签:

  1.2.2 JUnit4引入了一个JUnit3中没有的新特性——类范围的 setUp() 和tearDown() 方法。

  任何用 @BeforeClass 注释的方法都将在该类中的测试方法运行之前刚好运行一次,而任何用@AfterClass注释的方法都将在该类中的所有测试都运行之后刚好运行一次。

  1.2.3 异常测试:

  异常测试是Junit4中的大改进。Junit3的异常测试是在抛出异常的代码中放入try块,然后在try块的末尾加入一个fail()语句。

  例如该方法测试一个被零除抛出一个ArithmeticException:

  该方法不仅难看,而且试图挑战代码覆盖工具,因为不管测试是否通过还是失败,总有一些代码不被执行。在JUni4中,可以编写抛出异常的代码,并使用注释来声明该异常是预期的:

  如果没有异常抛出或者抛出一个不同的异常,那么测试将失败。

  1.2.4 JUnit4添加了两个比较数组的assert() 方法:

  public static void assertEquals(Object[] expected,Object[]actual)

  public static void assertEquals(String message, Object[]expected,Object[] actual)

  这两个方法以直接的方式比较数组:如果数组长度相同,且每个对应的元素相同,则两个数组相等,否则不相等。数组为空的情况也作了考虑。

  1.3 JUnit 4 常用的几个annotation 介绍

  ★ @Before:初始化方法,在任何一个测试执行之前必须执行的代码;

  ★ @After:释放资源,在任何测试执行之后需要进行的收尾工作;

  ★@Test:测试方法,表明这是一个测试方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。至于方法内该写些什么,那要看你需要测试些什么了;在这里可以测试期望异常和超时时间,如@Test(timeout=100),我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你可以发现这些Bug了。

  ★@Ignore:忽略的测试方法,标注的含义是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,可以进行正常的测试。

  ★ @BeforeClass:针对所有测试,只执行一次,且必须为static void;

  ★ @AfterClass:针对所有测试,只执行一次,且必须为static void;

  所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –>@Test–> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –>@Test–> @After。

  如下面例子:

  import static org.junit.Assert.*; importorg.junit.After;importorg.junit.AfterClass;importorg.junit.Before;importorg.junit.BeforeClass;importorg.junit.Ignore;importorg.junit.Test; public class JUnit4Test{

  @Before

  public void before() {

  System.out.println(@Before);

  }

  @Test

  public void test() {

  System.out.println(@Test);

  assertEquals(5 + 5, 10);

  }

  @Ignore

  @Test

  public void testIgnore() {

  System.out.println(@Ignore);

  }

  @Test(timeout = 50)

  public void testTimeout() {

  System.out.println(@Test(timeout = 50));

  assertEquals(5 + 5, 10);

  }

  @Test(expected = ArithmeticException.class)

  public void testExpected() {

  System.out.println(@Test(expected = Exception.class));

  throw new ArithmeticException();

  }

  @After

  public void after() {

  System.out.println(@After);

  }

  @BeforeClass

  public static void beforeClass() {

  System.out.println(@BeforeClass);

  };

  @AfterClass

  public static void afterClass() {

  System.out.println(@AfterClass);

  };

  };

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd