【问题标题】:Any way to create one single Cucumber report for multiple feature files run by as many Runner classes?有什么方法可以为多个 Runner 类运行的多个功能文件创建一个 Cucumber 报告?
【发布时间】:2018-10-05 23:45:31
【问题描述】:

我正在使用 AbstractTestNGCucumberTests 运行 Cucumber 功能。

每个特性文件都有一个对应的 Runner 类,它扩展了 AbstractTestNGCucumberTests 类。

public class LoginRunner extends AbstractTestNGCucumberTests {
}

public class CreateAccountRunner extends AbstractTestNGCucumberTests {
}

我还在使用 Cucumber 报告侦听器,它是 ISuiteListener 的实现。完成后,Cucumber ReportBuilder 将生成报告。

public class CucumberReporting implements ISuiteListener{//}

我的 TestNG.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <listeners>
        <listener
                class-name="listeners.reportlistener.CucumberReport" />
    </listeners>
    <test name="Test - 1">
        <classes>
            <class name="testrunner.LoginRunner" />
            <class name="testrunner.CreateAccountRunner" />
        </classes>
    </test>
</suite>

如您所见,有两个跑步者课程。当我运行 testng.xml 时,它会执行一个运行器类,然后移动到下一个。

在这种情况下,只有最后一次运行的特征文件会生成 Cucumber 报告。换句话说,报告正在被覆盖。每次运行 xml 都会得到一个 HTML 报告。

如何生成一份报告,其中包含两个跑步者类的结果?

【问题讨论】:

    标签: java selenium cucumber testng listener


    【解决方案1】:

    我认为,您需要合并 xml 报告文件。以唯一的名称保存每个文件,然后将其合并。这可能会有所帮助:

    Click

    【讨论】:

      【解决方案2】:

      最好的选择是创建一个新的 Runner 类来打印所有数据。 示例:

      @CucumberOptions(
              format = {...},
              features = {"src/test/resource"} //All the feature files must be present here.
              )
      public class CucumberTagRunnerTest {
      
      }
      

      此外,对于选择性报告,您可以在功能文件中使用@tag 并打印特定于@tag 特定的测试用例的结果。 @tag - 可用于特定的完整功能文件或某些测试用例。

      @CucumberOptions(
              format = {...},
              features = {"src/test/resource"},
              tags = {"@tag"} //Like this.
              )
      public class CucumberTagRunnerTest {
      
      }
      

      在所有功能文件中:

      @tag
      Feature: Proof of Concept
        I want to use this template for my feature file
        ...
      

      我希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        有两种方法可以接近它。

        第一种方法,使用 testng 套件 xml 配置运行功能文件,然后使用 testng 报告。您可以自定义此报告以满足您的需求。使用testNG的IReporter接口接口。

        第二种方式,当您在选项中定义格式时,会为不同的功能提供不同的文件夹。然后编写一个实用程序将所有报告合并到一个文件中。

        【讨论】:

          【解决方案4】:

          只有一种方法可以获取一份报告。将所有运行程序文件放在一个包中,并在 testNG.xml 文件中使用该包名来执行测试。我做了与下面相同的事情。

          您只需在textNG.xml 中提供您的包名称,例如:package name="testRunner" 并通过右键单击 testNG.xml 文件并从 Eclipse 中选择 runas TestNG test 来运行您的套件。

          Poject structure that showcase testrunner package

              <?xml version="1.0" encoding="UTF-8"?>
              <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
              <suite name="BDD Test Suite" verbose="1" parallel="classes" thread-count="2" configfailurepolicy="continue">
                  <listeners>       
                      <listener class-name="managers.LocalWebDriverListener" />
                  </listeners>
          
                   <test name="Chrome Test">
                      <parameter name="browserName" value="chrome"/>
                      <packages>
                          <package name="testRunner"/>
                       </packages>
                   </test>
          
                 <test name="Firefox Test">
                   <parameter name="browserName" value="firefox"/>
                   <packages>
                      <package name="testRunner"/>
                   </packages>     
                  </test>
          
              </suite>
          

          【讨论】:

            猜你喜欢
            • 2016-03-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-05-19
            • 1970-01-01
            • 2019-09-07
            相关资源
            最近更新 更多