zoukankan      html  css  js  c++  java
  • 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会被忽略。

  • 相关阅读:
    [原]终于做了一个登陆页
    JDK 1.7环境变量的配置
    值类型和引用类型讲解,本人在大学时候的笔记,写给新手
    CDays2 习题一 (改进函数)及相关内容解析。Python 基础教程
    Winedt 7.0 Build: 20120321 永久试用方法 Winedt 7.0 破解
    Arduino 笔记。开篇
    What we find changes who we become.
    Python 中的POST/GET包构建以及随机字符串的生成。Python 初级应用
    CDays–2 完成核心功能 CMD模块 Python基础教程 cmd cli
    Python HDB3 AMI 编码与解码
  • 原文地址:https://www.cnblogs.com/alisapan/p/6888527.html
Copyright © 2011-2022 走看看