1、JUnit测试套件
讲这个之前先要说一下@RunWith。如果一个类被@RunWith注释修饰,或者类继承了一个被该注释修饰的类,JUnit将会使用这个注释所指明的运行期来运行测试,而不是JUnit默认的运行期。
测试套件是为了便于同时测试多个类而产生的。如果我们的测试类不断增加,我们一个个依次运行这些测试类显得繁琐且费劲。如果我们将我们要运行的测试类集成到我们的测试套件中,比如一个系统功能对应一个测试事件,一个测试套件中包含多个测试类,每次测试系统功能时,只要执行一次测试套件就可以了。
测试代码,首先建立3个测试任务类:
public class TaskTest1 {
@Test
public void test() {
System.out.println("this is TaskTest1");
}
}
public class TaskTest2 {
@Test
public void test() {
System.out.println("this is TaskTest2");
}
}
public class TaskTest3 {
@Test
public void test() {
System.out.println("this is TaskTest3");
}
}
新建一个套件类,包含上面三个测试类:
@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})
public class SuitTest {
/*
* 1.测试套件就是组织测试类一起运行的
*
* (1)写一个作为测试套件的入口类,这个类里不包含其他的方法
* (2)更改测试运行器Suite.class
* (3)将要测试的类作为数组传入到Suite.SuiteClasses({})
*/
}
运行SuitTest,结果显示:
2、参数化设置
参数化设置允许开发人员使用不同的值反复运行同一个测试
步骤:
①要进行参数化测试,需要在类上面指定如下的运行器:@RunWith (Parameterized.class)
②然后,在提供数据的方法上加上一个@Parameters注解,这个方法必须是静态static的,并且返回一个集合Collection。
③在测试类的构造方法中为各个参数赋值,(构造方法是由JUnit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。
@RunWith(Parameterized.class) //1.更改默认的测试运行器为RunWith(Parameterized.class)
public class ParamterTest {
//2.声明变量存放预期值和测试数据
int expected =0;
int input1 = 0;
int input2 = 0;
//3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{3,1,2},
{4,2,2}
}) ;
}
//4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
public ParamterTest(int expected,int input1,int input2) {
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}
//5.运行测试方法,即可完成对多组数据的测试
@Test
public void testAdd() {
assertEquals(expected, new Calculator().add(input1, input2));
}
}
运行结果: