为了从testng.xml
检索浏览器类型(我想在其上运行Selenium测试),我编写了如下代码 -
public class TestClass {
@BeforeClass
public void beforeClass(ITestContext context) {
String browser = context.getCurrentXmlTest().getParameter("browser");
if(browser.equals("firefox")){
driver = new FirefoxDriver();
}
.
.
.
以下是我的testng.xml
-
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Task-Manager-Suite" verbose="10" >
<parameter name="browser" value="firefox" />
<test name="Test" >
<classes>
<class name="org.test.st.StackOverflowTest" />
</classes>
</test>
</suite>
当我运行testng.xml
时,测试运行正常,browser
设置为parameter
testng.xml
标记中的值提及
但是当我打开另一个测试类文件时,右击它并选择“Run As” - &gt; 'TestNG Test',browser
的值设置为null
。它没有从testng.xml
在执行此操作后是否有任何内容我可以运行测试类文件,浏览器的值将从testng.xml
中获取?
当我想查看由我撰写的测试时,每次我都要转到testng.xml
并使用我想要运行的文件名更新class
标记。
这就是为什么我每次想要检查我写的测试时都要寻找可以避免编辑testng.xml
的东西。
请指出我处理此类问题的博客或github链接。
答案 0 :(得分:1)
这是因为当您从测试类运行为Run as&gt; testng测试,TestNg将创建一个自定义xml文件,其中您定义的参数将不在那里。因此,要在套件文件中获取参数,请选择套件文件并运行为&gt; TestNG Suite。
如果您坚持从测试类运行,请在项目&gt;属性&gt;模板XML文件中将您的套件文件设置为eclipse中的模板XML文件。
希望有所帮助
答案 1 :(得分:0)
我用:
@Parameters{"browser"}
public void beforeClass(@Optional("firefox") String browser) {
// ...
}