我有两个使用不同客户端类型运行的调用程序类:
public class InvokeIntegTestsWithClient_A {
public static void main(String[] args) {
TestNG testng = new TestNG();
testng.setTestClasses(new Class<?>[] { CanaryFunctionalTestFactory.class});
testng.run();
testng.setTestClasses(new Class<?>[] { CanaryConsumerTestFactory.class});
testng.run();
}
}
public class InvokeIntegTestsWithClient_B {
public static void main(String[] args) {
TestNG testng = new TestNG();
testng.setTestClasses(new Class<?>[] { CanaryFunctionalTestFactory.class});
testng.run();
testng.setTestClasses(new Class<?>[] { CanaryConsumerTestFactory.class});
testng.run();
}
}
他们都叫同一组测试工厂。测试工厂使用Factory注释选择客户端类型:
public class CanaryFunctionalTestFactory {
@Factory(dataProvider = "clientType")
public Object[] createTestSuiteInstances(String clientType) {
final IStopgapCanalTestAPI client;
if (clientType.equals(CLIENT_A)) {
client = RoundRobinClientFactory.createRoundRobinClientA();
} else if (clientType.equals(CLIENT_B){
client = RoundRobinClientFactory.createRoundRobinClientB();
}
}
}
有没有办法让CanaryFunctionalTestFactory
知道哪个调用者类正在调用它?我想要做的是:如果InvokeIntegTestsWithClient_A
调用它,它将选择客户端A.如果InvokeIntegTestsWithClient_B
调用它,它将选择客户端B.
或者,我尝试在testng.setTestClasses(new Class<?>[] { CanaryFunctionalTestFactory.class});
中传递参数。但看起来我无法在这里使用构造函数。所以我不确定在使用test ng.setTestClasses()
方法