@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,和这个注解名冲突了。改过来就好。