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