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 运行任何类的测试,它允许你以任何你喜欢的方式构建你的测试。您可以在套件标签中指定您的侦听器,这将是用于所有类的侦听器。请参阅此示例

于 2012-11-29T09:55:02.457 回答