JUnit 测试集
为了能够一次运行多个测试类,JUnit提供了测试集(test suite),这是通过类org.junit.runners.Suite 来实现的。Suite类是一个包含不同测试类的容器,同时也是一个运行器,可以运行一个或多个测试类中,或者多个测试集中的所有用@Test 标注的测试方法。当单独运行一个测试类时,不需要为测试类指定测试集信息,因为测试运行器会自动创建一个Suite。以下是一个使用测试集的示例:
import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({FolderConfiguratorTest.class,FileConfigurationTest.class}) public class FileSystemConfigurationTestSuite { ······ }
在以上的代码中,我们使用@RunWith 注释指定了相应的运行器,并通过在@SuiteClasses注解中指定测试类,来列出我们想要在这个测试集中包含的测试类,这些类中所有被@Test标注的方法都将在测试中运行。对于单个运行的测试类而言,相当于只在@SuiteClasses中指定了当前一个类。
在@SuiteClasses中指定的类不仅可以是单个的测试用例(test case),也可以是测试集(test suite),这样就使得测试集的组合更加灵活,下面是一个组合测试集的例子:
1 public class TestCaseA { 2 3 @Test 4 public void test(){ 5 System.out.println("TestCaseA # test"); 6 } 7 } 8 public class TestCaseB { 9 10 @Test 11 public void test(){ 12 System.out.println("TestCaseB # test"); 13 } 14 } 15 public class TestCaseC { 16 17 @Test 18 public void test(){ 19 System.out.println("TestCaseC # test"); 20 } 21 } 22 public class TestCaseD { 23 24 @Test 25 public void test(){ 26 System.out.println("TestCaseD # test"); 27 } 28 } 29 @RunWith(Suite.class) 30 @SuiteClasses({TestCaseA.class,TestCaseB.class,TestCaseC.class}) 31 public class TestSuiteA { 32 33 } 34 @RunWith(Suite.class) 35 @SuiteClasses({TestCaseC.class, TestCaseD.class}) 36 public class TestSuiteB { 37 38 } 39 @RunWith(Suite.class) 40 @SuiteClasses({TestSuiteA.class, TestSuiteB.class,TestCaseD.class}) 41 public class MasterTestSuite { 42 43 }
注意,在主测试集MasterTestSuite中,指定了两个测试集(TestSuiteA 和TestSuiteB)和一个测试用例(TestCaseD),而且TestSuiteA和TestSuiteB中的测试用例是由交集的,这些都不会影响主测试集的运行,以下是主测试集在Eclipse中运行结果:


浙公网安备 33010602011771号