TestNGでのファクトリーアノテーションとは何ですか?


ファクトリーアノテーションを使用すると、テストケースのインスタンスを複数生成し、異なるデータセットやパラメータで実行することができます。これは、同じテストメソッドを複数回実行する必要がある場合や、パラメータ化されたテストケースを作成する必要がある場合に特に便利です。

ファクトリーアノテーションを使用するには、次の手順に従います。

  1. テストクラス内のメソッドに @Factory アノテーションを追加します。
  2. @Factory アノテーションが付いたメソッドは、テストケースのインスタンスを生成するためのファクトリーメソッドとなります。このメソッドは、テストケースのパラメータやデータセットを受け取り、それに基づいてテストケースのインスタンスを生成します。
  3. ファクトリーメソッドは、テストケースインスタンスを返す必要があります。

以下に、ファクトリーアノテーションの使用例を示します。

import org.testng.annotations.Factory;
import org.testng.annotations.Test;
public class MyTestFactory {
    private String param;
    public MyTestFactory(String param) {
        this.param = param;
    }
    @Factory
    public Object[] createTestInstances() {
        Object[] result = new Object[3];
        for (int i = 0; i < 3; i++) {
            result[i] = new MyTestFactory("Test " + i);
        }
        return result;
    }
    @Test
    public void testMethod() {
        System.out.println("Test method executed with parameter: " + param);
    }
}

上記の例では、MyTestFactory クラスがファクトリーメソッド createTestInstances() を持っています。このメソッドは、3つのテストケースインスタンスを生成し、それぞれに異なるパラメータを設定しています。

テストクラスの testMethod() は、ファクトリーメソッドから生成されたテストケースインスタンスで実行されます。このメソッドは、実際のテストの内容を記述するためのものです。

ファクトリーアノテーションを使用することで、テストケースを柔軟に作成および管理することができます。異なるデータセットやパラメータでテストケースを実行する必要がある場合に特に便利です。