使用@Parameter annotation或ITestContext读取TestNG配置文件?

时间:2012-10-10 15:59:16

标签: java automated-tests testng

我发现有两种方法可以在testng xml配置文件中读取参数:

  1. 使用@Parameter注释并在注释后定义参数名称

  2. 使用ITestContext作为测试类,DataProvider或Factory的参数,并使用getCurrentXmlTest()getParameter()来读取参数。

  3. 出于任何原因,这些方式中的任何一种都是首选吗?还有其他办法吗?

1 个答案:

答案 0 :(得分:3)

我认为区别在于范围。如果我需要在我的所有测试套件中使用相同的参数,例如。 env变量,我会在实现ITestListener或ISuiteListener的侦听器中使用它(对于套件范围),然后使用ITestContext / Suitecontext在<test><suite>下的所有测试中应用该值

但是,如果我需要针对特定​​测试用例的非常具体的参数,那么我会在这些特定的测试用例上使用@Parameter注释。

此外,@Parameter只能采用简单的值,因此可能存在一些用例,其中测试需要基于某些参数值的不同对象(而不是字符串)。在这种情况下,我更喜欢数据提供者,读取参数值(您的第二个选项,虽然我认为测试类的参数不正确),创建对象然后将其提供给测试。 (例如,属性文件的名称可能是一个参数值,它是根据属性文件中的数据读取和创建的对象,并作为不同的测试数据提供给测试)。