java - Cucumber JUnit 平台引擎。控制台故障
问题描述
我最近开始使用 Cucumber JUnit 平台引擎。一切都很好,代码正在运行,但是,当我尝试通过控制台运行代码时出现问题(mvn clean install -Dtest=CucumberTest)。
通过 IntelliJ 测试运行:
通过控制台测试运行:
从控制台的日志角度来看,我看到执行了测试,但是,总而言之,我得到“没有执行测试错误”。这个问题背后的原因是什么?多谢你们
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[ERROR] Apr 28, 2021 2:58:55 PM org.junit.platform.launcher.core.LauncherConfigurationParameters loadClasspathResource
[ERROR] INFO: Loading JUnit Platform configuration parameters from classpath resource [/***/IdeaProjects/cucumber-testing/target/classes/junit-platform.properties].
@ab
Scenario: Scenario21 # steps/suite2.feature:4
@isolated @ab @ac
Scenario: Scenario12 # steps/suite1.feature:9
@isolated @ab @gc
Scenario: Scenario11 # steps/suite1.feature:5
@ab
Scenario: Scenario22 # steps/suite2.feature:8
When Wait for amount of time # steps.TestSteps.waitFor()
When Wait for amount of time # steps.TestSteps.waitFor()
When Wait for amount of time # steps.TestSteps.waitFor()
When Wait for amount of time # steps.TestSteps.waitFor()
ForkJoinPool-1-worker-5
ForkJoinPool-1-worker-4
ForkJoinPool-1-worker-1
Then Check thread naming # steps.TestSteps.getThreadNaming()
Then Check thread naming # steps.TestSteps.getThreadNaming()
ForkJoinPool-1-worker-2
Then Check thread naming # steps.TestSteps.getThreadNaming()
Then Check thread naming # steps.TestSteps.getThreadNaming()
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.051 s
[INFO] Finished at: 2021-04-28T14:58:57+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test (default-test) on project cucumber: No tests were executed! (Set -DfailIfNoTests=false to ignore this error.) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Process finished with exit code 1
我的 pom.xml 文件如下所示:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ii.Testing</groupId>
<artifactId>cucumber</artifactId>
<version>1.0.0</version>
<properties>
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
<cucumber.version>6.10.3</cucumber.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit-platform-engine</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
</plugin>
</plugins>
</build>
</project>
解决方案
与使用 Junit5 方式的 Maven 相反,IntelliJ 似乎使用 Junit4 方式使用 Cucumber。如果要使用 Junit4 方式,则需要从依赖项中删除cucumber-junit-platform-engine 。
要将 Cucumber 与 Junit5 一起使用,它不是开箱即用的,也没有很好的文档记录。
首先,您需要删除依赖cucumber-junit:
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
</dependency>
因为它与Junit4 使用 Cucumber 的方式有关。
你已经有了Junit5对 Cucumber 的依赖:
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit-platform-engine</artifactId>
<version>${cucumber.version}</version>
</dependency>
在您的代码中,您需要替换使用:
@RunWith(Cucumber.class)
@CucumberOptions(...)
来自cucumber -junit-platform-engine 的io.cucumber.junit.platform.engine.Cucumber :
@Cucumber
使其符合 Junit5 的最后一个技巧是将功能文件移动到与 @Cucumber 惹恼的包相同的存储库结构下,这意味着@Cucumber注释的 ii.Testing.cucumber.CucumberIT 需要具有以下文件夹结构下的功能文件:
- ii\测试\黄瓜
包含所有 *.feature 在其中或其下的子文件夹中。
最后一件事是让黄瓜属性工作,我设法让它与 Junit5 一起工作的唯一方法是使用junit-platform.properties并直接添加属性。
举例:
cucumber.publish.quiet=true
cucumber.plugin=pretty, summary, html:target/cucumber/report.html,json:target/cucumber/cucumber.json,junit:target/cucumber/cucumber.xml
cucumber.filter.tags=not @not-implemented and not @manual and not @unit-test
推荐阅读
- python-3.x - 如何将详细文本映射到一元或二元
- c - Visual Studio C Scanf 扫描两次而不是一次,只读取一次
- windows - Windows 的 Git GUI 窗口丢失和/或不可见
- python - 2013, '在查询期间丢失与 MySQL 服务器的连接 - Pymysql Microsoft sql server management Studio
- vba - 在 VBA 中实现多个接口的接口
- node.js - 如何重新连接到 websocket
- swift - SpriteKit presentScene 不适用于过渡,只有没有
- linux - 如何在 bash 脚本根模式下获取用户的 $HOME 目录?
- audio - 视频是 25 fps,音频是 50 fps?
- reactjs - React-Router V6 检查路径是否匹配模式