我正在尝试将我已经膨胀的项目从JUnit 4转换到TestNG,以便从中获得一些像样的报告。
我一直在关注http://test-able.blogspot.co.uk/2016/10/how-to-convert-test-classes-from-junit-to-testng.html上的一个教程
但我一点也不明白这一点。
在我现有的代码中,我有以下内容:
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
@Parameter
public static String browserName;
@Parameters
public static Collection<Object[]> data () {
Common.printLine();
debug.print(thisClass + " set up browser parameters: " + global.variables.browsers);
switch(global.variables.browsers) {
case "all":
Object[][] data = { {"firefox"}, {"chrome"}, {"edge"} };
return Arrays.asList(data);
case "firefox":
Object[][] data1 = { {"firefox"}};
return Arrays.asList(data1);
case "chrome":
Object[][] data2 = { {"chrome"}};
return Arrays.asList(data2);
case "edge":
Object[][] data3 = { {"edge"}};
return Arrays.asList(data3);
default:
Object[][] data4 = { {"firefox"}};
return Arrays.asList(data4);
}
} 对于参数位,testNG的替换代码看起来很好:
@DataProvider(name = "data")
public static Collection<Object[]> data () {
Common.printLine();
debug.print(thisClass + " set up browser parameters: " + global.variables.browsers);
switch(global.variables.browsers) {
case "all":
Object[][] data = { {"firefox"}, {"chrome"}, {"edge"} };
return Arrays.asList(data);
case "firefox":
Object[][] data1 = { {"firefox"}};
return Arrays.asList(data1);
case "chrome":
Object[][] data2 = { {"chrome"}};
return Arrays.asList(data2);
case "edge":
Object[][] data3 = { {"edge"}};
return Arrays.asList(data3);
default:
Object[][] data4 = { {"firefox"}};
return Arrays.asList(data4);
}
} 这就是建议的等效参数,但我不明白如何应用它?
@Test(dataProvider="data")
public void test2(String keyword) {
} 谁能解释一下如何调整我上面显示的参数,browserName?
我认为browserName之前保存了集合对象的输出,因此,例如,当输入参数(global.variables.browsers)设置为'all‘时,将按顺序对每个浏览器执行测试。(如下所示:http://test-able.blogspot.co.uk/2016/03/do-cross-browser-test-automation-like-a-pro-part2.html)
发布于 2018-01-29 22:50:12
您可以使用TestNG的the parameter feature:
@Parameters("browserName")
@DataProvider(name = "data")
public static Collection<Object[]> data(String browserName) {
// ...
}使用套件:
<suite name="My suite">
<parameter name="browserName" value="all"/>
<test name="Simple example">
<-- ... -->
</test>
</suite>https://stackoverflow.com/questions/48498405
复制相似问题