私のシナリオは次のとおりです。
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を避けたいです。