![](/img/trans.png)
[英]Programmatically set test parameters in TestNG xml suite for parallel execution
[英]TestNG: Running test programmatically - parameters set on XmlTest object are null when executing test method
我想使用 TestNG 以编程方式运行测试套件。
我创建了测试结构:XmlSuite -> XmlTest -> TestClass(它扩展了 XmlClass)
我在做三件事:
但是在测试执行时会发生什么,当它转到 @Test 方法时,对象没有我之前设置的东西。
代码
public class TestRunner {
public static void main(String[] args) {
XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
// Add parameter to XmlTest
test.addParameter("testParam1", "clock");
TestClass testClass = new TestClass();
// Add parameter to XmlClass
Map<String, String> testClassParameters = new HashMap<>();
testClassParameters.put("classParam1", "valueOfClassParam1");
testClass.setParameters(testClassParameters);
// Set day variable
testClass.setDay("Friday");
testClass.setClass(TestClass.class);
test.setXmlClasses(Arrays.asList(testClass)) ;
TestNG tng = new TestNG();
tng.setXmlSuites(Arrays.asList(suite));
tng.run();
}
}
public class TestClass extends XmlClass {
private String day;
@Test
public void test1() {
System.out.println("Day: " + day);
System.out.println("LocalParameters: " + getLocalParameters());
System.out.println("AllParameters: " + getAllParameters());
}
public void setDay(String day) {
this.day = day;
}
}
结果:
Day: null
LocalParameters: {}
------------> Exception
我认为你期望做的是:
public class TestRunner {
public static void main(String[] args) {
// Add parameter to XmlClass
Map<String, String> testClassParameters = new HashMap<>();
testClassParameters.put("classParam1", "valueOfClassParam1");
testClassParameters.put("day", "Friday");
XmlClass testClass = new XmlClass();
testClass.setParameters(testClassParameters);
testClass.setClass(TestClass.class);
XmlSuite suite = new XmlSuite();
suite.setName("TmpSuite");
XmlTest test = new XmlTest(suite);
test.setName("TmpTest");
// Add parameter to XmlTest
test.addParameter("testParam1", "clock");
test.setXmlClasses(Arrays.asList(testClass)) ;
TestNG tng = new TestNG();
tng.setXmlSuites(Arrays.asList(suite));
tng.run();
}
}
public class TestClass {
@Parameters({ "day", "testParam1", "classParam1" })
@Test
public void test1(String day, String testParam1, String classParam1) {
System.out.println("Day: " + day);
System.out.println("testParam1: " + testParam1);
System.out.println("classParam1: " + classParam1);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.