Junit4 测试类、方法执行顺序

测试代码:

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


public class Test {

	static{
		System.out.println("静态初始化块");
	}
	
	public Test(){
		System.out.println("构造函数");
	}
	
	@BeforeClass
	public static void beforeclass1(){
		System.out.println("beforeclass1");
	}
	@BeforeClass
	public static void beforeclass2(){
		System.out.println("beforeclass2");
	}
	
	@Before
	public void before1(){
		System.out.println("before1");
	}
	@Before
	public void before2(){
		System.out.println("before2");
	}
	
	@org.junit.Test
	public void test1(){
		System.out.println("test1");
	}
	@org.junit.Test
	public void test2(){
		System.out.println("test2");
	}
	
	@After
	public void after1(){
		System.out.println("after1");
	}
	@After
	public void after2(){
		System.out.println("after2");
	}
	
	@AfterClass
	public static void afterclass1(){
		System.out.println("afterclass1");
	}
	@AfterClass
	public static void afterclass2(){
		System.out.println("afterclass2");
	}
}

运行该测试类,输出结果如下:

静态初始化块

beforeclass2

beforeclass1

构造函数

before2

before1

test1

after1

after2

构造函数

before2

before1

test2

after1

after2

afterclass1

afterclass2

通过输出结果,不难看出

1、静态初始化块是最先执行的,并且只执行一次,不受@Test方法个数的影响。

2、接着执行 @BeforeClass 标记的方法,标记@BeforeClass的方法可以有多个,标记@BeforeClass的方法必须是静态方法。

3、每个@Test标记的方法执行前,都会新创建一个测试类的实例(执行构造函数)。

4、每个@Test标记的方法执行前,都会先执行一遍所有@before标记的方法。

5、每个@Test标记的方法执行后,都会执行一遍所有@After标记的方法。

6、所有@Test标记的方法都执行完毕后,最后执行@AfterClass标记的方法。

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2212875