当前位置: 首页 > 知识库问答 >
问题:

Maven测试不使用Spring Boot 2.2和JUnit 5运行cucumber场景

颛孙越
2023-03-14

我正在Spring Boot 2.2.6上尝试JUnit 5和Cucumber,在我的应用程序中需要BDD场景和单元测试。我已经创建了一个虚拟ping控制器对应的功能文件。

当我运行mvn清洁测试时,不调用Cucumber测试。只调用JUnit测试。但是,当单击CucumberTest.javaRun Test按钮时,我可以从Intellij GUI运行Cucumber场景。

以下是我的课程:

DummyApplicationTests。java:

package com.a.dummy;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@ActiveProfiles("test")
public class DummyApplicationTests {

    @Test
    public void contextLoads() {
    }

}

cucumber测试。java:

package com.a.dummy.bdd;

import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources/features")
public class CucumberTest {
}

CucumberSpringContextConfiguration。java:

package com.a.dummy.bdd;

import com.a.dummy.DummyApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
@ContextConfiguration(classes = DummyApplication.class)
public abstract class CucumberSpringContextConfiguration {

}

est.java

package com.a.dummy.bdd.steps;

import com.a.dummy.bdd.CucumberSpringContextConfiguration;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

public class PingTest extends CucumberSpringContextConfiguration {

    @When("^the client calls /ping")
    public void the_client_issues_GET_ping() {
        ...
    }

    @Then("^the client receives status code of (\\d+)$")
    public void the_client_receives_status_code_of(int statusCode) {
        ...
    }

    @And("^the client receives ping response")
    public void the_client_receives_ping_response_body() {
       ...
    }
}

我错过了什么?

共有3个答案

岑驰
2023-03-14

2021个答案可以补充

<dependency>
  <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit-platform-engine</artifactId>
  <version>${cucumber.version}</version>
</dependency>

给你的pom。Junit 5允许使用这个xml文件。另见https://github.com/cucumber/cucumber-jvm/blob/main/junit-platform-engine/README.md想了解更多想法。

高钱青
2023-03-14

JUnit 5支持尚未集成,我不得不包括junit-vintage,因为Runwith是Junit4注释。

岳彬炳
2023-03-14

如果您刚刚升级到Spring 2.4.0,而maven没有运行集成测试,那是因为:

cucumber是以JUnit 4为基础的。如果您使用的是JUnit 5,请记住还要包含JUnit vintage引擎依赖项。有关更多信息,请参阅JUnit 5文档

从Spring Boot 2.4.0参考中,您可以按如下方式修复它:

如果您有使用JUnit 4的测试,可以使用JUnit 5的老式引擎来运行它们。要使用vintage引擎,请添加对junit vintage引擎的依赖项,如下例所示:

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 类似资料:
  • 我正试图在Maven中基于cucumber标记运行一套JUnitCucumber特性。我可以让它们按顺序运行,但不能并行运行。我找到了一个名为小胡瓜的软件包,它可以帮我解决这个问题。 然而,我无法让测试运行,我看了github上的示例maven项目,它在Cucumber.class运行良好,但在西葫芦上抛出一个错误。 任何帮助将不胜感激。 我已在pom中包括以下内容 我是在召唤我的跑步者。 我得到

  • 我遇到了无法使用Maven运行JUnit5测试的问题。在IDE中运行它们工作正常,但使用“mvn测试”会产生以下输出: 这是我的测试课程: pom: 我做了一些研究,我认为这可能与混合JUnit4和JUnit5特性有关,这导致maven surefire插件无法运行测试。然而,我找不到那些剩余的JUnit4特性可能在哪里。我将感谢任何帮助。

  • 有没有人能告诉我为什么我不能使用Maven运行任何测试。 已配置SureFire插件 在runner类下设置胶合代码 “测试”被追加到runner类 注意:如果我将文件作为Junit运行,那么它可以正确地运行所有场景。只有当我使用Maven运行它时,才不会运行任何测试。

  • 是否可以通过右键单击功能文件中的各个场景而不是使用命令文件或直接运行 TestNG 运行器文件来使用 TestNG 运行器运行cucumber场景? 我使用Intellij在maven测试框架中运行cucumber场景。在POM.xml文件中,我有一个引用testNG.xml文件的Surefire插件,该文件指向TestNG runner类。 当我从终端运行“mvn test”时,它会调用 Tes

  • 如何使用Maven在以下位置运行cucumber测试。 源文件夹'src/main/java'和'src/main/resources'包括在每个源文件夹中创建的包'com.testing.testproject.login'中的步骤定义和功能文件。 这是我的POM文件: 提前道谢。

  • 我正在尝试运行一个使用Mockito的JUnit cucumber测试。这是我遇到的问题。在我的cucumber赛跑课上,我有 在我的常规JUnit测试中 鉴于我一次只能有一个@RunWith,我如何将Mockito与cucumber结合使用呢?