我想知道是否有一种方法可以使用不同的配置方法(比如在类级别,@ Before / AfterClass),这将使用户能够选择在测试用例中使用哪种配置方法。 例如:
@BeforeClass
public void configuration1 () {
// Do your configuration1
}
@BeforeClass
public void configuration2 () {
// Do your configuration2
}
我希望能够选择使用哪种配置方法。当然,这可以通过配置方法中的条件来完成,但我想知道是否可以避免运行不包含特定运行中所需配置的方法。
提前致谢!
答案 0 :(得分:2)
TestNG提供Listeners来自定义默认功能。根据您的要求,需要实施IInvokedMethodListener。我不认为命令行参数可以传递给testng xml,但试试你的运气。在下面的代码中,“配置”被假定为来自testng xml的参数。
示例代码(未测试)
public class CustomListener implements IInvokedMethodListener {
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult itr) {
if (method.isConfigurationMethod()) {
String userPassed = method.getTestMethod().getXmlTest()
.getLocalParameters().get("configuration");
if(based on userPassed , call configuration() method){
}
}
}
@Override
public void afterInvocation(IInvokedMethod arg0, ITestResult arg1) {
// TODO Auto-generated method stub
}
}
如果您决定从java类调用此Listener,则可以读取cmd行args并将其传递给CustomListener。只是一个想法。
答案 1 :(得分:0)
根据您的测试设置,您可能只使用群组:
public class Test {
@BeforeClass(groups = {"A"})
public void configuration1() {...}
@BeforeClass(groups = {"B"})
public void configuration2() {...}
@Test(groups = {"A", "B"})
public void testFoo() {...}
@Test(groups = {"A"})
public void testFoo() {...}
}
或者您可能会考虑参数化您的测试/使用数据提供程序。