首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从JUnit 4转换为TestNG。如何处理参数?

从JUnit 4转换为TestNG。如何处理参数?
EN

Stack Overflow用户
提问于 2018-01-29 17:51:31
回答 1查看 366关注 0票数 0

我正在尝试将我已经膨胀的项目从JUnit 4转换到TestNG,以便从中获得一些像样的报告。

我一直在关注http://test-able.blogspot.co.uk/2016/10/how-to-convert-test-classes-from-junit-to-testng.html上的一个教程

但我一点也不明白这一点。

在我现有的代码中,我有以下内容:

代码语言:javascript
运行
复制
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的替换代码看起来很好:

代码语言:javascript
运行
复制
    @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); 
    }  
} 

这就是建议的等效参数,但我不明白如何应用它?

代码语言:javascript
运行
复制
@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)

EN

回答 1

Stack Overflow用户

发布于 2018-01-29 22:50:12

您可以使用TestNG的the parameter feature

代码语言:javascript
运行
复制
@Parameters("browserName")
@DataProvider(name = "data")
public static Collection<Object[]> data(String browserName) { 
  // ...
}

使用套件:

代码语言:javascript
运行
复制
<suite name="My suite">
  <parameter name="browserName"  value="all"/>
  <test name="Simple example">
  <-- ... -->
  </test>
</suite>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48498405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档