0

我想知道是否有任何方法可以在 junit 4 中动态添加测试套件。

例如,我有一个如下所述的 TestClassA,其中包含测试用例“test1”

class TestClassA 
{
    @Test
    public void test1()
    {
        createTestClassDynamically(); // this creates a test class having
                        // setUp(), tearDown() methods and one test case .
    }
}

测试用例 test1 有一个方法 createTestClassDynamically(),它动态地创建一个新的测试类(比如说 TestClassB),它有 setUp()、tearDown() 方法和一个测试用例(比如说 test2())。

我想运行 test1,然后当动态生成 TestClassB 时,我希望也执行测试用例“test2”。

我知道这很复杂,而且不是最好的做法,但在我的框架中,我需要这样做以动态生成大量测试类,而不是将它们物理地放在包中。任何人都可以提供任何帮助/建议吗?

4

1 回答 1

0

我已经解决了这是我的框架,它使用 Junit 4 的参数化功能帮助执行具有不同参数的相同测试用例。
下面提到的是我如何实现它的示例代码,如果它对任何人有帮助,请考虑发布它。
另外,如果有人有更好的解决方案,请随时发布。

class TestClassA 
{

  private TestClassB classBObj;

  public TestClassA(TestClassB obj) {
   classBObj= obj;
  }

@Test
public void test1()
{
// createTestClassDynamically(); // remove this method as Parameterized 
                // feature will take care of dynamic test execution.
}

@Test
public void test2()
{
 // Test case from Test class B using TestClassB object (classBObj)

}

public static Collection<Object[]> getParameters() {
  Collection<Object[]> parameteres = new ArrayList<Object[]>();

  Object[] obj1 = new Object[]{new TestClassB()};
  Object[] obj2 = new Object[]{new TestClassB()};

  parameteres.add(obj1);
  parameteres.add(obj2);

  // ....... add more test data this way or create a loop

  return parameteres;
   }
}
于 2012-07-05T05:15:43.390 回答