首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让TestNG在“运行套件结果”中展示黄瓜场景?

如何让TestNG在“运行套件结果”中展示黄瓜场景?
EN

Stack Overflow用户
提问于 2017-02-20 20:26:48
回答 2查看 2K关注 0票数 0

我已经创建了一个maven项目,并尝试使用TestNG插件运行Cucumber+Selenium+Java测试。虽然一些使用JUnit+Cucumber的教程会显示某个功能的每个场景的结果,但my TestNG results选项卡只显示功能名称。我遗漏了什么?

我有一个功能认证里面,我有两个场景登录和注销。

我期望在TestNG的“运行套件的结果”选项卡中看到类似这样的内容:From a JUnit tutorial

My current testng result is like this. 'Authentication' is the feature, but the 2 scenarios inside it are not appearing

EN

回答 2

Stack Overflow用户

发布于 2017-03-29 19:45:16

前面的答案是正确的,但不是

代码语言:javascript
运行
复制
scenarioList.add(new Object[]{scenario, scenario.getGherkinModel().getName()});

使用

代码语言:javascript
运行
复制
scenarioList.add(new Object[]{scenario});

否则会出现类似的错误:Selenium Webdriver, TestNG - data provider is trying to pass 2 parameter but the method take 3 and TestNG is unable in inject a suitable object

票数 1
EN

Stack Overflow用户

发布于 2017-03-04 05:58:59

如果您遵循cucumber-jvm源代码(https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator-testng/src/test/java/cucumber/examples/java/calculator/RunCukesByFeatureAndCompositionTest.java)中给出的示例,那么由于DataProvider,这将为每个特性创建一个测试:

代码语言:javascript
运行
复制
@DataProvider
public Object[][] features() {
  return testNGCucumberRunner.provideFeatures();
}

如果修改DataProvider以返回场景,则每个场景将得到一个testNG测试。

代码语言:javascript
运行
复制
public List<CucumberFeature> getFeatures() {
        return runtimeOptions.cucumberFeatures(resourceLoader);
    }

public Object[][] provideScenarios() {
        try {
            List<CucumberFeature> features = getFeatures();
            List<Object[]> scenarioList = new ArrayList<Object[]>(features.size());

            for (CucumberFeature feature : features) {
                List<CucumberTagStatement> scenarios = feature.getFeatureElements();

                for (CucumberTagStatement scenario : scenarios) {
                    // If this is a Scenario Outline, split it up so each one is a test.
                    if (scenario instanceof CucumberScenarioOutline) {
                        List<CucumberExamples> cucumberExamplesList = ((CucumberScenarioOutline) scenario).getCucumberExamplesList();

                        for (CucumberExamples cucumberExamples : cucumberExamplesList) {
                            List<CucumberScenario> exampleScenarios = cucumberExamples.createExampleScenarios();
                            for (CucumberScenario exampleScenario : exampleScenarios) {
                                scenarioList.add(new Object[]{exampleScenario, exampleScenario.getGherkinModel().getName()});
                            }
                        }
                    } else
                        scenarioList.add(new Object[]{scenario, scenario.getGherkinModel().getName()});
                }
            }
            return scenarioList.toArray(new Object[][]{});
        } catch (CucumberException e) {
            return new Object[][]{new Object[]{new CucumberExceptionWrapper(e)}};
        }
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42344595

复制
相关文章

相似问题

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