Java 有没有办法为由尽可能多的运行程序类运行的多个功能文件创建一个Cucumber报告?

Java 有没有办法为由尽可能多的运行程序类运行的多个功能文件创建一个Cucumber报告?,java,selenium,cucumber,testng,listener,Java,Selenium,Cucumber,Testng,Listener,我正在使用AbstractTestNGCucumberTests运行Cucumber特性 每个功能文件都有一个相应的Runner类,它扩展了AbstractTestNGCucumberTests类 public class LoginRunner extends AbstractTestNGCucumberTests { } public class CreateAccountRunner extends AbstractTestNGCucumberTests { } 我还使用了Cucumb

我正在使用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时,它执行一个runner类,然后移动到下一个

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


如何生成一个包含两个runner类结果的报表?

我认为,您需要合并xml报表文件。用唯一的名称保存每个文件,然后合并它。这可能有助于:


最好的选择是创建一个新的Runner类,它将打印所有数据。 例如:

此外,对于选择性报告,您可以在功能文件中使用@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
  ...

我希望这能有所帮助。

有两种方法可以帮助你

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


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

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

您只需在
textNG.xml
中指定包名,如:package name=“testRunner”,然后右键单击testNG.xml文件并选择runas testNG test from Eclipse来运行套件


@tag
Feature: Proof of Concept
  I want to use this template for my feature file
  ...
    <?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>