测试套件是一些测试不同类用例,可以使用@RunWith和@Suite注解运行所有东西在一起。如果有很多测试类,想让它们都运行在同一时间,而不是单一地运行每个测试,这是非常有用的。
当一个类被注解为@RunWith, JUnit 将调用被在其中注解,以便运行测试类,而不使用内置的 JUnit 运行方法。
基于前面的章节中的类,我们可以创建两个测试类。一个类将测试公共方法 prepareMyBag()和其他测试类将测试方法 addPencils()。因此,我们最终将有以下两个类:
PrepareMyBagTest.java
package com.yiibai.junit;
import org.junit.Test;
import static org.junit.Assert.*;
public class PrepareMyBagTest {
FirstDayAtSchool school = new FirstDayAtSchool();
String[] bag = { "Books", "Notebooks", "Pens" };
@Test
public void testPrepareMyBag() {
System.out.println("Inside testPrepareMyBag()");
assertArrayEquals(bag, school.prepareMyBag());
}
}
AddPencilsTest.java
package com.yiibai.junit;
import org.junit.Test;
import static org.junit.Assert.*;
public class AddPencilsTest {
FirstDayAtSchool school = new FirstDayAtSchool();
String[] bag = { "Books", "Notebooks", "Pens", "Pencils" };
@Test
public void testAddPencils() {
System.out.println("Inside testAddPencils()");
assertArrayEquals(bag, school.addPencils());
}
}
现在,我们将创建一个测试套件,以便运行上面的类在一起。用鼠标右键单击 test 源文件夹,并创建一个新的名为SuiteTest.java 的Java类,使用下面的代码:
SuiteTest.java
package com.yiibai.junit;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ PrepareMyBagTest.class, AddPencilsTest.class })
public class SuitTest {
}
使用@ Suite.SuiteClasses注解,你可以定义测试类,将被列入执行。
所以,如果用鼠标右键单击测试套件并选择 Run As -> JUnit Test, 两个测试类与已经在@ Suite.SuiteClasses注解定义的顺序执行。