Welcome

首页 / 软件开发 / 数据结构与算法 / TestNG官方文档中文版(6)-参数

TestNG官方文档中文版(6)-参数2011-04-01 BlogJava sky ao5.5 - Parameters

测试方法不要求是无参数的。你可以在每个测试方法上使用任意数量的参数,并指示 testNG传递正确的参数。

有两种方式用于设置参数:使用testng.xml或者编程式。

5.5.1 - Parameters from testng.xml

如果你要为你的参数使用简单值,你可以在你的testng.xml中明确指定:

@Parameters({ "first-name" })
@Test
public void testSingleString(String firstName) {
System.out.println("Invoked testString " + firstName);
assert "Cedric".equals(firstName);
}

在这个代码中,我们明确指定java方法的参数“firstName”应该接收名为“first- name”xml参数的值。 这个xml参数在testng.xml中定义:

<suite name="My suite">
<parameter name="first-name" value="Cedric"/>
<test name="Simple example">
<-- -->

同样的方法可以用于注解@Before/After和@Factory:

@Parameters({ "datasource", "jdbcDriver" })
@BeforeMethod
public void beforeTest(String ds, String driver) {
m_dataSource = ; // look up the value of datasource
m_jdbcDriver = driver;
}

这次,两个java参数ds和driver将分别接收被设置给属性datasource和jdbc-driver的 值。

参数可以通过可选注解来声明为可选:

@Parameters("db")
@Test
public void testNonExistentParameter(@Optional("mysql") String db) { }

如果在testng.xml文件中没有找到名为"db"的参数,测试方法将接受在@Optional注解 中指定的默认值:"mysql"

@Parameters 注解可以在下面位置使用:

* 在任何有@Test, @Before/After或者@Factory注解的方法上

* 在测试类的最多一个构造函数上。这种情况下,当TestNG需要实例化测试类时,他 将调用这个特别的带有初始化为testng.xml中指定的值的参数的构造函数。这个特性可以 被用于初始化类内部的值域为将用于测试方法的值。

注意:

* xml参数被以在注解中出现的相同顺序映射到java参数,如果参数数量不匹配testNG 将发生错误。

* 参数是有范围的。在testng.xml中,你可以在<suite>标签或者<test> 标签下声明参数。如果两个参数同名,在<test>标签下定义的参数优先。非常适用 于这样的场合:需要指定一个应用于所有测试的参数,但是又希望在特定测试用覆盖它的 值。