知識(shí)點(diǎn)
- @test修飾用于測(cè)試
- @test的兩個(gè)參數(shù):timeout=毫秒、expect=xxx.class(用于預(yù)期異常)
- @RunWith測(cè)試運(yùn)行器:參數(shù)設(shè)置、套件測(cè)試
源代碼
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、建立測(cè)試單元
public class MyDemoTest {
//對(duì)add函數(shù)正常測(cè)試
@Test
public void addTest() {
assertEquals(5, new MyDemo().add(2, 3));
}
//@Ignore修飾后,對(duì)minus函數(shù)忽略測(cè)試
@Ignore
@Test
public void minusTest() {
assertEquals(-1, new MyDemo().minus(2, 3));
}
//@test中,參數(shù)設(shè)置預(yù)估異常,如果異常出現(xiàn),則測(cè)試通過(guò)
@Test(expected = ArithmeticException.class)
public void divideExceptionTest() {
assertEquals(1, new MyDemo().divide(3, 0));
}
}
2、套件測(cè)試(同時(shí)測(cè)試多個(gè)測(cè)試單元)
@RunWith(Suite.class)
@Suite.SuiteClasses({MyDemoTest1.class,MyDemoTest2.class})
public class SuitTest {
/***
#這里不需添加其他函數(shù)
#測(cè)試類(lèi)前用RunWith(Suite.class)修飾
#需要同時(shí)測(cè)試的測(cè)試類(lèi)放到@Suite.SuiteClasses中
***/
}
3、RunWith參數(shù)設(shè)置(相當(dāng)于提前預(yù)設(shè)很多測(cè)試參數(shù))
//類(lèi)前用@RunWith(Parameterized.class)修飾
//建立集合方法,預(yù)設(shè)參數(shù)
@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));
}
}