java单元测试注释执行顺序

Posted AlisaPan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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会被忽略。















以上是关于java单元测试注释执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

jmete 学习 --元件详解

pytest文档19-doctest测试框架

在 C# Visual Studio 中执行所有测试脚本时执行代码

java怎么做单元测试,紧急!

java程序执行顺序

测试用例cicd怎么实现的