首页 > 解决方案 > 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>

标签: javamavencucumberjunit5cucumber-jvm

解决方案


与使用 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

推荐阅读