0
我想用TestNG以編程方式運行Test Suite。TestNG:以編程方式運行測試 - 執行測試方法時,在XmlTest對象上設置的參數爲null
我創建的測試structurde:XmlSuite - > Xmltest的 - >識別TestClass(延伸XmlClass)
我做三兩件事:
- 添加參數的XMLTest與addParameter(字符串,字符串)
- 設定參數爲識別TestClass與setParameters(MAP)
- 在識別TestClass
但是當測試執行到@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
是的,周圍的東西。但是對於TestClasses來說,參數數量可能會有所不同,這將是抽象的。最好的做法是將Map作爲參數傳遞,但只能使用String。我想讓TestClass包含不同的對象,這些對象在執行時不會爲空。 – jnowakow
如果您願意,您可以注入'ITestContext',但是我沒有看到如何輕鬆找到類參數,因爲ITestContext提供了視圖。 –
juherr