13

有谁知道是否有办法在使用@Parameter注释的同时使用 TestNG DataProvider和测试?我们的测试套件有一些常量配置信息,这些信息通过@Parameter 注解传递给测试方法。我们现在想使用 DataProvider 对一组数据值运行这些测试。

我理解确定结果参数的顺序的内部问题,但如果可能的话,我们需要这个特性。

有什么想法吗?

在理想的世界中,我可以这样做:

@Test(dataprovider = "dataLoader")
@Parameters("suiteParam")
public void testMethod(String suiteParam, String fromDataParam) {
...
}
4

2 回答 2

10

嘿,这可能有点笨拙,但你为什么不使用@BeforeClass 方法将suiteParam 本地存储在测试类的字段中,就像这样。

private String suiteParam;

@BeforeClass
@Parameter("suiteParam")
public void init(String suiteParam) {
  this.suiteParam = suiteParam;
}

这样,您可以以通常的方式使用您的数据提供者,并且仍然可以访问您的套件参数。

于 2009-06-14T08:25:39.097 回答
2

是的,使用TestNG 的依赖注入功能。您可以访问 DataProvider 中所有已定义的参数。这是一些需要 test_param 参数的示例 DataProvider:

@DataProvider(name = "usesParameter")
public Object[][] provideTestParam(ITestContext context) {
    String testParam = context.getCurrentXmlTest().getParameter("test_param");
    return new Object[][] {{ testParam }};
}

这样,您可以在 DataProvider 中收集配置和生成的参数,然后将其用于您的测试。有关 ITestContext 类的详细信息,请参阅TestNG JavaDoc

于 2011-01-17T16:05:57.663 回答