Junit4中的注解

@org.junit.Test         标志这是一个测试方法。Junit会先构造这个测试类的一个实例,然后调用这个测试方法。

@org.junit.BeforeClass  所有单元测试方法执行前先执行一次带这个注解的方法,如果当前单元测试类继承的父类中也有带@BeforeClass注解
                        的方法,则先执行父类中的带@BeforeClass注解的方法,再执行子类中带@BeforeClass注解的方法
                        注解在public static void 无参方法上

@org.junit.AfterClass   所有单元测试方法执行后再执行一次带这个注解的方法,如果当前单元测试类继承的父类中也有带@AfterClass注解
                        的方法,则先执行子类中的带@AfterClass注解的方法,再执行父类中带@AfterClass注解的方法
                        注意,带@AfterClass注解的方法肯定会执行,即使带@BeforeClass注解的方法报错,也会执行带@AfterClass注解的方法。
                        也就是说,如果执行了带@BeforeClass注解的方法,那么肯定会执行带@AfterClass注解的方法。
                        注解在public static void 无参方法上

@org.junit.Before    每个单元测试方法执行前都会先执行带这个注解的方法,如果当前单元测试类继承的父类中也有带Before注解的方法,
                     则先执行父类中的带@Before注解的方法,再执行子类中带@Before注解的方法
                     注解在public void 方法上

@org.junit.After     每个单元测试方法执行后都会执行带这个注解的方法。如果当前单元测试类继承的父类中也有带After注解的方法,
                     则先执行子类中的带@After注解的方法,再执行父类中带@After注解的方法
                     注意,如果执行了带@Before注解的方法,带@After注解的方法肯定会执行,即使测试方法或者@Before方法报错,也会执行带@After注解的方法。
                     当然,如果在带@BeforeClass注解的方法中就报错了,或者在构造方法中就报错了,那么肯定不会执行带@After注解的方法。
                     也就是说,如果执行了带@Before注解的方法,那么肯定会执行带@After注解的方法。
                     注解在public void 方法上

@org.junit.Ignore    配置在测试方法上,则这个测试方法不会被执行,配置在测试类上,则这个测试类的所有测试方法都不会被执行

Demo:

package com.xh.learning;

import static org.junit.Assert.assertTrue;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;


/** 
 * <Description> <br> 
 *  
 * @author luoluocaihong<br>
 * @version 1.0<br>
 * @taskId <br>
 * @CreateDate Dec 7, 2017 <br>
 * @since V8.1<br>
 * @see com.xh.learning <br>
 */
public class MyJuintTest {

    private static int number;
    private int count;

    public MyJuintTest() {
        number++;
        count++;
       System.out.println("构造方法,number = " + number + ",count = " + count);       
    }

    @BeforeClass
    public static void setUpBeforeClass() {       
        number++;
        System.out.println("setUp BeforeClass, number = " +  number);
    }

    @AfterClass
    public static void setDownAfterClass() {
        number++;
        System.out.println("setDown AfterClass, number = " + number);      
    }

    @Before
    public void setUpBefore() {
        number++;
        count++;
        System.out.println("setUp Before, number = " + number + ",count = " + count);        
    }

    @After
    public void setDownAfter() {
        number++;
        count++;
        System.out.println("setDown After,number = " + number + ",count = " + count);       
    }

    @Test
    public void testOne() {
        number++;
        count++;
        System.out.println("testOne number = " + number + ",count = " + count);
    }


    @Test
    public void testTwo() {
        number++;
        count++;
        System.out.println("testTwo number = " + number + ",count = " + count);

    }


    @Ignore
    public void testThree() {
        number++;
        count++;
        System.out.println("testThree number = " + number + ",count = " + count);       
    }
}

单元测试结果:

setUp BeforeClass, number = 1
构造方法,number = 2,count = 1
setUp Before, number = 3,count = 2
testOne number = 4,count = 3
setDown After,number = 5,count = 4
构造方法,number = 6,count = 1
setUp Before, number = 7,count = 2
testTwo number = 8,count = 3
setDown After,number = 9,count = 4
setDown AfterClass, number = 10

results matching ""

    No results matching ""