1. @Test
在junit3中,是通过对测试类和测试方法的命名来确定是否是测试,且所有的测试类必须继承junit的测试基类。在junit4中,定义一个 测试方法变得简单很多,只需要在方法前加上@Test就行了。
注意:测试方法必须是public void,即公共、无返回数据。可以抛出异常。
2. @Ignore
有时候我们想暂时不运行某些测试方法\测试类,可以在方法前加上这个注解。在运行结果中,junit会统计忽略的用例数,来提醒你。但是不建议经常这么做,因为这样的坏处时,容易忘记去更新这些测试方法,导致代码不够干净,用例遗漏。
3. @Before
与@BeforeClass的区别在于,@Before不止运行一次,它会在每个用例运行之前都运行一次。主要用于一些独立于用例之间的准备工作。比如两个用例都需要读取数据库里的用户A信息,但第一个用例会删除这个用户A,而第二个用例需要修改用户A。那么可以用@BeforeClass创建数据库连接。用@Before来插入一条用户A信息。
注意:必须是public void,不能为static。不止运行一次,根据用例数而定。
4. @After
与@Before对应。
5. @BeforeClass
当我们运行几个有关联的用例时,可能会在数据准备或其它前期准备中执行一些相同的命令,这个时候为了让代码更清晰,更少冗余,可以将公用的部分提取出来,放在一个方法里,并为这个方法注解@BeforeClass。意思是在测试类里所有用例运行之前,运行一次这个方法。例如创建数据库连接、读取文件等。
@BeforeClass注解方法这个方法只会运行一次。且必须为public static void 方法,即必须为公共、静态、无法回值方法。否则运行时会报诸如一下异常:
java.lang.Exception: Method beforeClassMth() should be static
java.lang.Exception: Method afterClassMth() should be public
6. @AfterClass
与@BeforeClass对应。
7. Demo
package com.junit.test;
import org.junit.*;
/**
* Created by frank on 2018/6/27.
*/
public class JunitDemo {
@BeforeClass
public static void beforeClassMth(){
System.out.println("@BeforeClass:所有测试用例执行前执行该方法!");
}
@Before
public void beforeMth(){
System.out.println("@Before:测试用例执行前会执行该方法");
}
@Test
public void testMth1(){
System.out.println("testMth1测试方法一");
}
@Test
public void testMth2(){
System.out.println("testMth2测试方法二");
}
@Ignore
@Test
public void testIgnoreMth(){
System.out.println("测试方法二");
}
@After
public void aftherMth(){
System.out.println("@After:测试用例方法执行后会执行该方法");
}
@AfterClass
public static void afterClassMth(){
System.out.println("@AfterClass:所有测试用例执行完毕,执行该方法");
}
}
运行结果:
@BeforeClass:所有测试用例执行前执行该方法!
@Before:测试用例执行前会执行该方法
testMth2测试方法二
@After:测试用例方法执行后会执行该方法
@Before:测试用例执行前会执行该方法
testMth1测试方法一
@After:测试用例方法执行后会执行该方法
Test ignored.
@AfterClass:所有测试用例执行完毕,执行该方法
Process finished with exit code 0