技术开发 频道

JUnit及其相关的单元测试技术

  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.*; import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Ignore;import org.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");

  };

  };

  右击测试类,选择Junit运行……

  输出结果如下:

  @BeforeClass

  @Before

  @Test(timeout = 50)

  @After

  @Before

  @Test(expected = Exception.class)

  @After

  @Before

  @Test

  @After

  @AfterClass

  在eclipse中junit运行结果视图中可以看到testIgnore是被忽略的,没有执行;还有其中有一个方法运行报错。

0
相关文章