如果你有很多的 TestSuite, 你应该把他们很好的组织起来。在我们的测试框架中, 一个 TestSuite 在其实例化阶段添加所有的 TestCase 。这就意味着我们只要拥有一个 TestSuite 的实例,我们就拥有了它所包含的 TestCase 。这样 , 一个 AllTest 类可以以如下方式来编写 :
清单 8. AllTest.java
1 public class AllTest extends TestSuite{
2
3 public AllTest(){
4 this.addTest(new LWIAttributesRatingTestSuite());
5 this.addTest(new LWIAttributesRecommendationTestSuite());
6 }
7
8 public static void main(String[] args) {
9 AllTest at = new AllTest();
10 junit.textui.TestRunner.run(at);
11 }
12 }
2
3 public AllTest(){
4 this.addTest(new LWIAttributesRatingTestSuite());
5 this.addTest(new LWIAttributesRecommendationTestSuite());
6 }
7
8 public static void main(String[] args) {
9 AllTest at = new AllTest();
10 junit.textui.TestRunner.run(at);
11 }
12 }
测试用例的组织可以用下图来说明。图中,每一个矩形都代表了一个“TestSuite”类。“TestSuite ”类以树形结构组织起来。你可以调用任何一个类的“main”方法来执行以这个类为树根的子树下的所有测试用例。以“WASAllTest”类为例,执行它的“main”方法将测试 “WASRecTestSuite”和 “WASRatingTestSuite”中的所有测试用例。
图 3. 组织测试用例
总结
本文介绍了在对规则进行单元测试时实现可配置性和复用性。我们也介绍了一些常用的单元测试技术,比如使用 Mock 对象和扩展 JUnit 。这些技术可以使用到任何其他的单元测试中。