1

私のシナリオは次のとおりです。

public class ExampleTest extends AbstractExampleTest {
    @Test(dependsOnMethods={"someMethodFromAbstractExampleTest"}
    public void firstTest() {
        // Assert
    }

    // here I would like to call CommonTests
}

public class CommonTests {
    @Test
    public void sharedTest() {
        // Assert
    }
}

CommonTestsのようなものが存在する理由は、繰り返されるテストシーケンスが含まれるためです。私が現在ExampleTestからCommonTestsに情報を伝達する方法は、静的なものを介して行われています。これは機能しているように見えますが、おそらく最善ではありません。

TestNGのドキュメントに従ってプログラムでCommonTestsを呼び出すと、これは正常に機能します。私が抱えている問題は、結果がExampleTestのランナー内に記録されないことです。

@Test
public void actionBasedTest(ITestContext context) {
    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();
    testng.setTestClasses(new Class[] { ExampleAction.class });
    testng.addListener(tla);
    context.getSuite().addListener(tla);
    testng.run();
}

上記は少し良いですが、報告は「org.testng.TestRunner @ ####」のようなものに制限されており、実行されたテストメソッドを公開していません。

だから私の質問は:(継承を介さずに)別のクラスからテストを実行し、同じリスナーに結果を記録することはできますか?

編集:testng.xmlを避けたいです。

4

1 に答える 1

0

最後の質問に答えると、testng.xml を使用して任意のクラスのテストを実行できます。これにより、テストを好きなように構成できます。suite タグでリスナーを指定すると、それがすべてのクラスに使用されるリスナーになります。については、これを参照してください。

于 2012-11-29T09:55:02.457 に答える