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