项目中遇到这样问题,代码如下:
public class AllSuites {
    public static Test suite() {
        TestSuite suite = new TestSuite("All tests");
        suite.addTestSuite(a.class);
        suite.addTestSuite(b.class);
        return suite;
    }
}a.java:
...
public class a extends TestCase {
public void testA(){
           ...
        }
}
AllSuites中用静态方法把a加入到suite中,运行正常,
但是现在需求要把a先加入一个suite中,然后再把这个suite加入到AllSuites中,我该怎么实现,也就是说我想在Allsuites中的suite()中加个suite(而不是TestCase)该怎么写?

解决方案 »

  1.   

    就是我目前在AllSuites中的suite()里都是加的是TestCase,但是现在我想在里面加入TestSuite,该怎么办
      

  2.   

    那建议采用适配器模式。
    使得类TestCase通过适配层来和类TestSuite兼容。
    比如定义一个新的适配层接口IAdapter,然后将TestSuite中的方法进行抽象(即将所有用到的方法全部放到接口中)。然后再将TestCase去实现IAdapter。
    Over!
      

  3.   

    补充:将TestCase去实现IAdapter需要根据你项目实际情况来实现!
      

  4.   

    使用junit.framework.TestSuite.addTest(Test):
    public static Test suite() {
    TestSuite suite = new TestSuite("A testsuit");
    suite.addTestSuite(a.class);
    suite.addTestSuite(b.class); TestSuite result = new TestSuite("All tests");
    result.addTest(suite);//Notice here
    return suite;
    }
      

  5.   

    不好意思,可能还是我没说清楚,这是需求:
    1. All test case should be following naming rule:  <TestedClassName>Test
    2. All test case should be integrated to test framework through TestSuites(JUnitTestSuite). The naming of test suites should like <PackageName>TestSuite. And all test suites should be included in a super suite named AllSuites.
    就是说先写testCase,然后把testCase加到<PackageName>TestSuite中,最后再把all test suites加到AllSuites中,
    我原来的a.java和b.java是testCase,我直接加到AllSuites中立,但是现在需求是要经过中间的<PackageName>TestSuite,我不清楚该怎么加?谢谢各位哥哥
      

  6.   

    中间的<PackageName>TestSuite要兼顾testCase和testSuite的属性,因为他对于AllSuites相当于是testcase,而对于testCase(a.java)又相当于testSuite
      

  7.   

    难道不是:
    public static Test suite() {
    TestSuite packageNameA= new TestSuite("A testsuit");
    packageNameA.addTestSuite(a.class);
    packageNameA.addTestSuite(b.class);
    TestSuite packageNameB= new TestSuite("B testsuit");
    .......
    TestSuite allSuites= new TestSuite("All tests");
    result.addTest(packageNameA); 
    result.addTest(packageNameB); 
    ....
    return allSuites;
    }
      

  8.   

    我觉得要求是要把packageNameA单独写成一个类,就类似a.java或AllSuites.java似的:
    public class a extends TestCase {
    public void testA(){
      ...
      }
    }
    =>
    public class packageNameA extends TestCase {
    public void testA(){
      ...
      }
    }
    然后再加到AllSuites里,运行packageNameA就像运行AllSuites一样