知识点
- @test修饰用于测试
- @test的两个参数:timeout=毫秒、expect=xxx.class(用于预期异常)
- @RunWith测试运行器:参数设置、套件测试
源代码
public class MyDemo {
public int add(int a,int b){
return a+b;
}
public int minus(int a,int b){
return a-b;
}
public int divide(int a,int b){
return a/b;
}
}
1、建立测试单元
public class MyDemoTest {
//对add函数正常测试
@Test
public void addTest() {
assertEquals(5, new MyDemo().add(2, 3));
}
//@Ignore修饰后,对minus函数忽略测试
@Ignore
@Test
public void minusTest() {
assertEquals(-1, new MyDemo().minus(2, 3));
}
//@test中,参数设置预估异常,如果异常出现,则测试通过
@Test(expected = ArithmeticException.class)
public void divideExceptionTest() {
assertEquals(1, new MyDemo().divide(3, 0));
}
}
2、套件测试(同时测试多个测试单元)
@RunWith(Suite.class)
@Suite.SuiteClasses({MyDemoTest1.class,MyDemoTest2.class})
public class SuitTest {
/***
#这里不需添加其他函数
#测试类前用RunWith(Suite.class)修饰
#需要同时测试的测试类放到@Suite.SuiteClasses中
***/
}
3、RunWith参数设置(相当于提前预设很多测试参数)
//类前用@RunWith(Parameterized.class)修饰
//建立集合方法,预设参数
@RunWith(Parameterized.class)
public class ParameterTest {
int expected = 0;
int input1 = 0;
int input2 = 0;
@Parameters
public static Collection<Object[]> t(){
return Arrays.asList(new Object[][]{
{3,1,2},
{4,2,2}
});
}
public ParameterTest(int expected,int input1,int input2){
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}
@Test
public void add() {
assertEquals(expected, new MyDemo().add(input1, input2));
}
}