Testng Factory Annotation根据相应的调用者传递不同的参数

时间:2018-06-03 17:00:34

标签: java testng

我有两个使用不同客户端类型运行的调用程序类:

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()方法

时是否有办法调用参数化构造函数

0 个答案:

没有答案