2

TestNG には、aからn 個のテストを自動的に作成するパラメータ化されたTest Aと、A で得られた結果を利用したいので、A のテストが終了するたびに実行する必要があるTest Bがあります。つまり、知りたいのは、次のことが可能かどうかです。dataProvider

パラメータ化された と を指定する@Test A(dataProvider = "inputList")@Test B、TestNG は次の単体テストを作成し、次の順序で実行します。

Test A1
Test B1 (Based on A1 result)
Test A2
Test B2 (Based on B2 result)
...

Test An
Test Bn (Based on An result)

既存の TestNG タグで可能ですか? @Test Bとして扱うことができることは@Afterわかっていますが、これは TestNG をテストとして理解することはできず、テスト B を後のレポートのテストとして見なす必要があります。

4

2 に答える 2

1

TestNG を使用できますFactory。例えば:

ファクトリ メソッドについて

public class TestClass {
    private final int p1;
    private final int p2;

    public TestClass(int p1, int p2) {
        this.p1 = p1;
        this.p2 = p2;
    }

    @Factory(dataProvider = "inputList")
    public static Object[] createTestClasses() {
        return new Object[]{
                new TestClass(1, 1),
                new TestClass(1, 0),
                new TestClass(1, -1),
        };
    }

    @Test
    public void A() {
        // test `A` code, stores result in some class member field
    }

    @Test(dependsOnMethods = {"A"})
    public void B() {
        // test `B` code, uses stored result from test `A`
    }
}

コンストラクター

public class TestClass {
    private final int p1;
    private final int p2;

    @Factory(dataProvider = "inputList")
    public TestClass(int p1, int p2) {
        this.p1 = p1;
        this.p2 = p2;
    }

    @DataProvider
    public static Object[][] inputList() {
        return new Object[][]{
                {1, 1},
                {1, 0},
                {1, -1}
        };
    }

    @Test
    public void A() {
        // test `A` code, stores result in some class member field
    }

    @Test(dependsOnMethods = {"A"})
    public void B() {
        // test `B` code, uses stored result from test `A`
    }
}

TestNG ドキュメンテーション ページのファクトリ参照してください。

于 2016-03-01T16:22:10.147 に答える