java单元测试注释执行顺序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java单元测试注释执⾏顺序JUnit4通过注解的⽅式来识别测试⽅法。⽬前⽀持的主要注解有:
@BeforeClass全局只会执⾏⼀次,⽽且是第⼀个运⾏
@Before在测试⽅法运⾏之前运⾏
@Test测试⽅法
@After在测试⽅法运⾏之后允许
@AfterClass全局只会执⾏⼀次,⽽且是最后⼀个运⾏
@Ignore忽略此⽅法
下⾯举⼀个样例:
1. import org.junit.After;
2. import org.junit.AfterClass;
3. import org.junit.Assert;
4. import org.junit.Before;
5. import org.junit.BeforeClass;
6. import org.junit.Ignore;
7. import org.junit.Test;
8.
9. public class Junit4TestCase {
10.
11. @BeforeClass
12. public static void setUpBeforeClass() {
13. System.out.println("Set up before class");
14. }
15.
16. @Before
17. public void setUp() throws Exception {
18. System.out.println("Set up");
19. }
20.
21. @Test
22. public void testMathPow() {
23. System.out.println("Test Math.pow");
24. Assert.assertEquals(4.0, Math.pow(2.0, 2.0), 0.0);
25. }
26.
27. @Test
28. public void testMathMin() {
29. System.out.println("Test Math.min");
30. Assert.assertEquals(2.0, Math.min(2.0, 4.0), 0.0);
31. }
32.
33. // 期望此⽅法抛出NullPointerException异常
34. @Test(expected = NullPointerException.class)
35. public void testException() {
36. System.out.println("Test exception");
37. Object obj = null;
38. obj.toString();
39. }
40.
41. // 忽略此测试⽅法
42. @Ignore
43. @Test
44. public void testMathMax() {
45. Assert.fail("没有实现");
46. }
47. // 使⽤“假设”来忽略测试⽅法
48. @Test
49. public void testAssume(){
50. System.out.println("Test assume");
51. // 当假设失败时,则会停⽌运⾏,但这并不会意味测试⽅法失败。
52. Assume.assumeTrue(false);
53. Assert.fail("没有实现");
54. }
55.
56. @After
57. public void tearDown() throws Exception {
58. System.out.println("Tear down");
59. }
60.
61. @AfterClass
62. public static void tearDownAfterClass() {
63. System.out.println("Tear down After class");
64. }
65.
66. }
Junit3的package是junit.framework,⽽Junit4是org.junit。
执⾏此⽤例后,控制台会输出
写道
Set up before class
Set up
Test Math.pow
Tear down
Set up
Test Math.min
Tear down
Set up
Test exception
Tear down
Set up
Test assume
Tear down
Tear down After class
可以看到,执⾏次序是@BeforeClass -> @Before -> @Test -> @After -> @Before -> @Test -> @After -> @AfterClass。@Ignore会被忽略。