我正在努力理解我老板分配给我的一些 Java TestNG 代码的执行流程。可惜原作者已经不在我公司了,只能靠我自己了。我已经阅读了一些 TestNG 教程(尤其是这个),但仍有疑问。
这是代码的测试类,它从外部文件了解要运行的测试,运行测试,然后关闭所有内容:
public class MyTestDriver {
public Object[][] data = null;
@BeforeSuite
public void beforeSuite() {
// open external info file
}
@DataProvider(name = "GetConfigData")
public Object[][] GetSyncConfigData() throws IOException {
try {
// Using external file, gather info about individual tests
// load that info into Object[][] data, I think
} catch (Exception e) {
// log errors
}
return data;
}
}
测试可能是异步测试或同步测试,因此这些情况由每个子类处理。这是异步的子类:
public class AsyncAPITest extends MyTestDriver {
@Test(dataProvider = "GetConfigData")
public void asyncTestExecution(String RUN, String TYPE, String ENVIRONMENT, String TESTNAME) throws Exception {
try {
// run tests
} catch (Exception e) {
// log errors
}
}
}
熟悉 Java TestNG 的编码人员会发现这些注释。
现在,假设我运行代码并且外部文件指定只应运行一个异步测试。在那种情况下,我确定代码的执行顺序是:
@BeforeSuite
MyTestDriver.beforeSuite()
@DataProvider(name = "GetConfigData")
MyTestDriver.GetSyncConfigData()
@Test(dataProvider = "GetConfigData")
AsyncAPITest.asyncTestExecution()
但这是我不明白的:信息如何从MyTestDriver.GetSyncConfigData()
to传递AsyncAPITest.asyncTestExecution()
?如果您查看 method asyncTestExecution()
,该方法实际上接受了很多参数:
public void asyncTestExecution(String RUN, String TYPE, String ENVIRONMENT, String TESTNAME) throws Exception
是什么提供了这些论点?如果我查看 的代码MyTestDriver.GetSyncConfigData()
,我不应该在某处看到这样的东西:
// data initialized as Object[][]
// data = AsyncAPITest.asyncTestExecution(RUN, TYPE, ENVIRONMENT, TESTNAME);
return data;
我只是不明白如何AsyncAPITest.asyncTestExecution()
调用,或者是什么提供了这些论点。我主要是因为我想发送更多参数以供以后修改。提前感谢您的任何建议或意见。