当测试类作为'TestNG Test'运行时,无法从testng.xml检索参数值

时间:2015-03-24 14:08:28

标签: java selenium selenium-webdriver testng

为了从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链接。

2 个答案:

答案 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) {
    // ...
}