当我一次性运行所有套件类时,TestNG xml参数不受Test脚本的尊重

时间:2017-04-24 11:40:35

标签: java xml testng

我有一个TestNG.xml,如下所示

<test name="Regression Tests - Test1">
    <parameter name="TestData" value = "Sample.xls" />
    <parameter name="VaultName" value = "Test Vault" />
    <parameter name="RestoreVault" value = "Test1" />
    <classes>
        <class name="Project.Tests.RegTest1"/>
        <class name="Project.Tests.RegTest2"/>
     </classes>
</test>

我的RegTest1.java将@Test方法设为

@Test
@Parameters("sourceName")
public void test1(String sourceName) throws Exception {

}

@Test
@Parameters("VaultName")
public void test2(String VaultName) throws Exception {

}

当我一起运行所有套件时,它无法识别输入参数TestData,VaultName等并抛出异常

org.testng.TestNGException: 
Parameter 'TestData' is required by @Test on method test1 but has not been marked @Optional or defined

但是,如果我的套件只有一个指定的测试类,它会拾取传递的相应参数。

如何在一起运行所有套件时传递参数?

2 个答案:

答案 0 :(得分:0)

你在哪里传递testng.xml中的“sourceName”??

  • test1方法需要按名称参数 - sourceName。所以它在test1方法中给出错误而不是test2。

如果它是可选参数,那么定义测试如:

public void test1(@Optional("sourceName") String sourceName) { 
    //Your test-case
}

答案 1 :(得分:0)

您缺少“测试数据”参数。您可以将它加载到BeforeClass注释上,并在不需要时将其设置为null。像这样:

@BeforeClass
@Parameters("TestData")
public void init(String testData) throws Exception {
   testData = null;
}

@Test
@Parameters("sourceName")
public void test1(String sourceName) throws Exception {

}

@Test
@Parameters("VaultName")
public void test2(String VaultName) throws Exception {

}