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中运行结果:

posted @ 2015-07-12 16:59  编程学童  阅读(178)  评论(0)    收藏  举报