当前位置: 首页 > 知识库问答 >
问题:

如何让TestNG在“Running Suite的结果”中显示cucumber场景?

谢烨烨
2023-03-14

我创建了一个maven项目,并尝试使用TestNG插件运行Cucumber SeleniumJava测试。虽然一些使用JUnit Cucumber的教程显示功能的每个场景的结果,但我的TestNG结果选项卡仅显示功能名称。我错过了什么?

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

我在TestNG的“运行套件的结果”选项卡中期待这样的东西:来自JUnit教程

我目前的测试结果是这样的。”“身份验证”是该功能,但其中的两种方案没有出现

共有2个答案

燕英奕
2023-03-14

如果您遵循cucumber jvm源代码中给出的示例(https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator-testng/src/test/java/cucumber/examples/java/calculator/RunCukesByFeatureAndCompositionTest.java),则由于数据提供程序的原因,这将为每个功能创建一个测试:

@DataProvider
public Object[][] features() {
  return testNGCucumberRunner.provideFeatures();
}

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

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)}};
        }
    }
黄跃
2023-03-14

前面的答案是对的但是而不是

scenarioList.add(new Object[]{scenario, scenario.getGherkinModel().getName()});

使用

scenarioList.add(new Object[]{scenario});

否则会出现这样的错误:Selenium Webdriver、TestNG-数据提供程序正在尝试传递2个参数,但方法取3,TestNG无法插入合适的对象

 类似资料:
  • 当从Intellij运行我的Cucumber验收测试时,测试结果不显示场景名称,只显示-这使得确定哪个场景实际上失败变得困难/不可能! 例如。 我使用JDK8和Intellij IDEA15 Community Edition(Build#ic-143.2287)以及以下Intellij IDEA15Community Edition插件: null 以下cucumber库(gradle): 这是

  • 我正在使用Ant构建我的项目并运行testng测试。我使用jenkins调用Ant目标来运行TestNG测试。还安装了TestNG插件在jenkins上运行在我的项目所在的同一台机器上。 在完成Jenkins的工作时,我得到了跟踪和TestNG结果没有生成。

  • 我使用下面的组合作为我的UI自动化代码。 硒 当我运行CukesRunner类来执行功能文件时,它会成功运行。但是Intellij中的TestNG窗口仅在缺少功能名称和场景/步骤详细信息时才会显示。 如果我错了,请纠正我。谢谢你。

  • 我有一个框架,它是用来创建的核心Java+TestNG。然后是TDD模型,POM是我们的构建管理工具。有人能告诉我是否有可能使用Cucumber将框架从TDD更新到BDD。但是我仍然希望对此需求做最小的更改,比如不更改任何现有的技术(核心语言、TestNG、Maven Sys.)。我的目标是如何在Eclipse中使用testng.xml/testng插件运行cucumber TC。在Jenkin

  • 我正在使用JavaSelenium和TestNG。我可以使用TestNG并行执行测试。 但现在我已经将cucumber与TestNG集成,但我无法并行执行cucumber场景。我可以使用并行执行两个功能文件,但不能在一个功能文件中并行执行两种场景。 有人知道我们如何在一个功能文件中实现场景的并行执行吗? 请在下面找到我的测试xml文件 请在下面找到我的cucumber跑者课程 请在下面找到我的测试

  • 我正在尝试使用cucumber-testng,它看起来很简单。到目前为止,我已经使用Gradle安装了以下软件包: (cucumber with testng) (java现在识别cucumber注释) (运行cucumber-testng测试) 如何运行这些测试?当通过命令运行时,我会看到错误。 我在java中的测试大纲如下: src/test/resources/feature/structu