如何在junit 4.10中动态添加测试套件

时间:2012-06-19 12:28:32

标签: junit junit4

我想知道是否有任何方法可以在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”也可以执行。

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

1 个答案:

答案 0 :(得分: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;
   }
}