0

junit4にテストスイートを動的に追加する方法があるかどうか知りたいと思いました。

たとえば、以下に説明するように、テストケース「test1」を持つTestClassAがあります。

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

テストケースtest1には、setUp()、tearDown()メソッドおよび1つのテストケース(たとえばtest2())を持つ新しいテストクラス(たとえばTestClassB)を動的に作成するメソッドcreateTestClassDynamically()があります。

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 に答える