Java TestNGCucumberRunner,CucumberV6不使用并行数据提供程序生成输出文件

Java TestNGCucumberRunner,CucumberV6不使用并行数据提供程序生成输出文件,java,selenium,maven,cucumber,testng,Java,Selenium,Maven,Cucumber,Testng,Edit3:能够通过Surefire插件执行生成TestNG输出,但是从IntelliJ TestNG运行程序执行套件仍然无法生成输出文件 Edit2:已从项目中删除jUnit。仍然没有产出 编辑:减少不必要的依赖项/运行程序命令 总而言之,我目前面临的问题是,我已经安装了Cucumber v6、TestNG v7和DataProvider并行运行程序 我正在执行TestNG测试套件(xml),它在Runner类下包含@test,该类通过@DataProvider收集场景(我相信这是一种常见的设

Edit3:能够通过Surefire插件执行生成TestNG输出,但是从IntelliJ TestNG运行程序执行套件仍然无法生成输出文件

Edit2:已从项目中删除jUnit。仍然没有产出

编辑:减少不必要的依赖项/运行程序命令

总而言之,我目前面临的问题是,我已经安装了Cucumber v6、TestNG v7和DataProvider并行运行程序

我正在执行TestNG测试套件(xml),它在Runner类下包含@test,该类通过@DataProvider收集场景(我相信这是一种常见的设置)

然而,在套件的末尾没有生成TestNG输出文件

这是我当前的项目设置:

跑步者:

package runners;

import java.util.*;

import io.cucumber.testng.*;
import org.openqa.selenium.*;
import org.testng.annotations.*;

import io.cucumber.testng.TestNGCucumberRunner;

@CucumberOptions(
        features = {"./src/test/resources/features/"}
        , glue = {"stepDefinitions"}
        , plugin = {"pretty:target/cucumber-reports/cucumber-pretty.txt",
        "html:target/cucumber-reports/raw-cucumber-html-report.html",
        "json:target/report.json",
        , monochrome = true
)
public class RunnerTest extends AbstractTestNGCucumberTests {

    private static TestNGCucumberRunner testNGCucumberRunner;

    @BeforeClass(alwaysRun = true)
    public void setUpClass() {
        testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
    }

    @AfterClass(alwaysRun = true)
    public void tearDownClass() {
        testNGCucumberRunner.finish();
    }

    @Test(suiteName = "Suite", description = "Runs Cucumber Parallel Scenarios", dataProvider = "parallelScenarios")
    public void runParallelScenario(PickleWrapper pickleWrapper, FeatureWrapper featureWrapper) {
            testNGCucumberRunner.runScenario(pickleWrapper.getPickle());
         
    @DataProvider(parallel = true)
    public Object[][] parallelScenarios() {
        if (testNGCucumberRunner == null) {
            testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
        }
        return testNGCucumberRunner.provideScenarios();
    }
}
以及Suite.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Test Suite" verbose="1" data-provider-thread-count="30">
    <test name="Scenario" verbose="1">
            <classes>
                <class name="runners.RunnerTest"/>
            </classes>
    </test>
</suite>
最后,测试被正确执行,但是没有包含TestNG文件的输出文件夹

每当我尝试跑步时:
mvn测试-Dcucumber.filter.tags=“@tag”

我没有执行任何操作,它显示以下内容:

[INFO] --- maven-surefire-plugin:3.0.0-M5:test (default-test) @ client-tests ---
[INFO] Tests are skipped.
我希望在对当前设置进行最小更改的情况下生成输出文件。 有人知道为什么不生成它们吗,甚至调用XML套件并在运行程序中使用所有TestNG注释

提前谢谢


Jackson。

Surefire和Failssafe插件本身不会跳过您的测试。您可以在命令行中明确跳过它们,也可以在父POM中跳过它们:

<parent>
    <groupId>com.client.tests</groupId>
    <artifactId>client-tests</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</parent>

com.client.tests
客户端测试
1.0.0-SNAPSHOT
不要在依赖项部分中使用surefire工件。请把它拿走

<dependency>
    <groupId>org.apache.maven.surefire</groupId>
    <artifactId>surefire-testng</artifactId>
    <version>3.0.0-M4</version>
</dependency>

org.apache.maven.surefire
surefire测试
3.0.0-M4
并使用插件中的依赖项,如下所示:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
            <configuration>
                <suiteXmlFiles>
                    <reportsDirectory>target/TestNG-Report</reportsDirectory>
                    <suiteXmlFile>Suite.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
           <dependencies>
               <dependency>
                   <groupId>org.apache.maven.surefire</groupId>
                   <artifactId>surefire-testng</artifactId>
                   <version>3.0.0-M5</version>
               </dependency>
           </dependencies>
        </plugin>

org.apache.maven.plugins
maven surefire插件
3.0.0-M5
目标/测试报告
Suite.xml
org.apache.maven.surefire
surefire测试
3.0.0-M5

我忘了提到,但可能没那么重要,我只有一个场景大纲,有很多例子。一眼我就看到了Cucumber的不同版本。您还同时使用JUnit和TestNG。在你的问题中,你有很多事情要做。这意味着,如果,如果人们能够做到这一点,他们很难提供帮助。从一个演示项目开始,请阅读stackoverflow.com/help/minimal-repeatable-example如果这是真的,那么您应该能够从POM中删除很多内容。你应该做这项工作,使你的问题最小化。它甚至可以解决你的问题。顺便说一句,你一定错过了一些关于黄瓜皮的东西。有很多更新的版本:它不是关于你在帖子里放了什么。这是一个非常小的例子,它可以适合你的文章。这样做有助于消除各种混杂因素。你必须做这项工作。你必须阅读:所以。。。继续前进。还有很多东西可以移除。使问题最小化。做这项工作。你好,谢谢你的回复。在plugin元素中添加依赖项会导致错误:发现以元素“dependency”开头的无效内容。同样关于父pom,这里没有任何内容,只有子pom的引用以及surefire插件的依赖关系。但是套件在包含子pom的模块中,所以我不认为这是一个问题。我还想说,通常我通过IntelliJ运行套件,而不使用maven命令,只是直接执行xml套件。是的,cource。我修正了我的评论并在插件中添加了内容。我想知道您是如何使用IntelliJ IDEA的。您没有使用自动完成吗?IDEA将为您键入任何内容,例如,在执行时使用-X参数键入“我可以看到
[DEBUG](s)skipTests=true
,但我从未将其设置为true…哦,对了,它位于父pom中
<dependency>
    <groupId>org.apache.maven.surefire</groupId>
    <artifactId>surefire-testng</artifactId>
    <version>3.0.0-M4</version>
</dependency>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
            <configuration>
                <suiteXmlFiles>
                    <reportsDirectory>target/TestNG-Report</reportsDirectory>
                    <suiteXmlFile>Suite.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
           <dependencies>
               <dependency>
                   <groupId>org.apache.maven.surefire</groupId>
                   <artifactId>surefire-testng</artifactId>
                   <version>3.0.0-M5</version>
               </dependency>
           </dependencies>
        </plugin>