Junit4的使用(@Test @Before @After @BeforeClass @AfterClass @Ignore)

时间:2021-05-29 05:04:57

@BeforeClass:类前执行,针对所有测试,只执行一次,且必须为static void。

@Before:方法前执行,多个Test方法时执行多次。非静态。

@Test:测试方法,在这里可以测试期望异常和超时时间。非静态。

@After:释放资源。非静态。

@AfterClass:类后执行,针对所有测试,只执行一次,且必须为static void。

@Ignore:忽略的测试方法。

package prs.rfh.ex.junit;
import org.junit.*;
/**
 * 
 * @author renfh
 * @description 测试test、before、after、beforeclass、afterclass的执行时机和顺序
 */
public class TestJunit {
	@Test
	public void testOne(){
		System.out.println("<Test1>");
	}
	@Test
	public void testTwo(){
		System.out.println("<Test2>");
	}
	@Ignore
	@Test
	public void testThree(){
		System.out.println("<test3>");
	}
	
	@Before
	public void BeforeOne(){
		System.out.println("BeforeOne");
	}
	@After
	public void AfterOne(){
		System.out.println("AfterOne");
	}
	@Before
	public void BeforeTwo(){
		System.out.println("BeforeTwo");
	}
	@After
	public void AfterTwo(){
		System.out.println("AfterTwo");
	}
	@BeforeClass
	public static void BeforeClassOne(){
		System.out.println("BeforeClassOne");
	}
	@BeforeClass
	public static void BeforeClassTwo(){
		System.out.println("BeforeClassTwo");
	}
	@AfterClass
	public static void AfterClassOne(){
		System.out.println("AfterClassOne");
	}
	@AfterClass
	public static void AfterClassTwo(){
		System.out.println("AfterClassTwo");
	}
	
	
}
执行结果:
BeforeClassTwo
BeforeClassOne
BeforeTwo
BeforeOne
<Test1>
AfterOne
AfterTwo
BeforeTwo
BeforeOne
<Test2>
AfterOne
AfterTwo
AfterClassOne
AfterClassTwo

由以上执行结果可以看出,对于多个before的执行顺序,按照代码的反序执行,而after则是顺序执行。

@Ignore则会使Test无效。


此外,关于这几个标签的继承性研究可以参照 http://blog.163.com/bobile45@126/blog/static/9606199220129682521489/


另:今天犯了个低级错误,引入@Test时无论如何不能提示import org.junit.*; 找了半天,发现我的类名就叫Test,和这个注解名冲突了。改过来就好。