一、Junit常用注释
- @Test 将一个普通的方法修饰成为一个测试方法。
- @Test(excepted=XX.class)
- @Test(excepted=ArithmeticException.class):预期被测方法是否抛出ArithmeticException异常
- @Test(timeout=毫秒)
- @Test(excepted=XX.class)
- @BeforeClass:它会在所有的方法运行前被执行:static修饰,只执行一次。
- @AfterClass:它会在所有的方法结束后被执行:static修饰,只执行一次。
- @Before:会在每一个测试方法被运行前都执行一次。
- @After:会在每一个测试方法运行后被执行一次。
- @Ignore:所修饰的测试方法会被测试运行器忽略。
- @RunWith:可以更改测试运行器org.junit.runner.Runner
Junit4的单元测试用例执行顺序为:@BeforeClass->@Before->@Test->@After->@AfterClass
每一个测试方法的调用顺序为:@Before->@Test->@After
二、测试套件
@RunWith注解:当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,Junit将会使用这个注解所指明的测试运行器进行测试。
多个测试代码类一起运行。
说明:
- 使用@RunWith注解,修改测试运行器,例如@RunWith(Suite.class) ,这个类就成为测试套件的入口类
- @Suite.SuiteClasses()中放入测试套件的测试类,以数组的形式{class1,class2}作为参数
三、JUnit参数化设置
如果测试代码大同小异,代码结构都是相同的,不同的只是测试的数据和预期值,那么有没有更好的方法将相同的代码结构提取出来,提高代码的重用度呢?
解决:进行参数化测试
步骤:
- 要进行参数化测试,需要在类上面指定如下的运行器:@RunWith(Parameterized.class)
- 在提供数据的方法上加上一个@Paramater注解,这个方法必须是静态static 的,并且返回一个集合Collection
- 在测试类的构造方法中为各个参数赋值(构造方法是由Junit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。
import static org.junit.Assert.*;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class TestParameter {
private static Calculator calcultor = new Calculator();
int expected = 0;
int num1 = 0;
//提供测试数据
@Parameters
public static Collection<Object[]> data() {
/*
* 2 2
* 3 3
* 4 4
* */
return Arrays.asList(new Object[][]{{2,2},{5,3},{9,4}});
}
//给Junit调用
public TestParameter(int expected,int num1) {
this.expected = expected;
this.num1 = num1;
}
//在此类下,此方法运行3次
@Test
public void testAdd() {
calcultor.add(num1);
assertEquals(expected, calcultor.getResult());
}
// @Test
// public void testAdd() {
// calcultor.add(2);
// assertEquals(2, calcultor.getResult());
// }
}
四、Junit测试步骤:
1、创建测试类
2、选择要测试的方法
3、设计测试用例,用断言方式比较
4、运行测试类,查看测试结果
5、查看测试覆盖率
五、在eclipse中配置jdk
- 在eclipse中配置jdk
Window–>Preferences–>java–>installed JREs–>add–>Standard VM–>选择jdk安装路径就好了