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

Maven不运行cumber测试

訾晋
2023-03-14

我有一个Maven/SpringBoot2.3。3应用JUnit 5和Cucumber(v6.5.1)测试。

问题是,我可以通过Maven运行OK单元测试和集成测试,但它不运行Cucumber。

cucumber赛跑者:

package cucumber.salad.api.integration.cucumber;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "classpath:features",
        plugin = { "pretty", "html:target/reports/cucumber", "json:target/cucumber.json", "usage:target/usage.jsonx", "junit:target/junit.xml" },
        extraGlue = "cucumber.salad.api.integration.cucumber.steps"
)
public class CucumberTest {
}

Cucumber Spring上下文配置:

package cucumber.salad.api.integration.cucumber;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.test.context.ContextConfiguration;
import cucumber.salad.App;
import io.cucumber.spring.CucumberContextConfiguration;

@ContextConfiguration
@CucumberContextConfiguration
@SpringBootTest(classes = App.class, webEnvironment = WebEnvironment.RANDOM_PORT)
public class CucumberSpringContextConfig {
    
    @LocalServerPort
    protected int port;
}

步骤:

package cucumber.salad.api.integration.cucumber.steps;
import static org.assertj.core.api.Assertions.assertThat;
import org.springframework.beans.factory.annotation.Autowired;
import cucumber.salad.api.integration.cucumber.CucumberSpringContextConfig;
import cucumber.salad.api.service.DummyService;
import io.cucumber.java.en.*;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class SaladStepDefinitions extends CucumberSpringContextConfig {
    
    // steps here
}

我在Maven pom中使用Surefire和故障保护。xml:https://github.com/danieldestro/cucumber-salad/blob/master/pom.xml

以下是项目存储库:https://github.com/danieldestro/cucumber-salad

我运行的命令:

mvn clean test integration-test

但测试执行没有任何迹象。

我错过了什么或者做错了什么?

共有3个答案

桓嘉谊
2023-03-14

如果您使用JUnit5,您所要做的就是添加两个cucumber依赖项(cucumber java和cucumber junit,通过从所有依赖项中排除JUnit4)。

此外,进口junit vintage引擎,以便cucumber可以使用它。

说明:

如果你导入jUnit 4,所有与jupiter(jUnit 5)的测试都将被忽略,反之亦然。您可以通过在jUnit的每个版本中添加两个类来测试它(通过在每个类上添加每个版本的@Test)。只有一个版本将运行。

上官迪
2023-03-14

您正在使用cucumber junit,它将cucumber与JUnit4集成在一起。您也在使用JUnit5。JUnit5可以通过JUnit vintage引擎执行JUnit4测试。但是,您已将此引擎从类路径中排除。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

要么包含junit-vintage-Engine,要么使用cucumber-junit-Platform-Engine而不是cucumber-jUnit

慕宏博
2023-03-14

我也有同样的问题;当我运行mvn test命令时,cucumber测试没有执行。我使用的是:

  • Spring靴:2.5。0

我所做的是排除junit-jupiter-引擎sping-boo-starter-test依赖项。

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 类似资料:
  • 当我调试它时,只有@BeforeClass配置有效-它打开浏览器并转到google。com,我也可以在控制台中看到我的功能的场景,所以Runner可以看到它。他们都说“测试被忽略”。如果我调试功能(而不是通过Runner),它们就会工作。如何从Runner运行/调试它们(一次一个)?请帮我找出错误 我的跑步者:

  • 你好,我正在尝试使用Maven运行一个JUnit测试。 [信息]没有要编译的内容-所有类都是最新的 [信息] [信息]--maven-surefire-plugin:2.10:test(default-test)@uitests-core-- 我不知道为什么它不能运行我的测试。请帮帮我。

  • 问题内容: 我在Eclipse中创建了一个新的maven项目,该项目通过使用HtmlUnitDriver和FirefoxDriver来调出一个网页并检查页面标题来运行简单测试。当我运行maven命令mvn test时,这就是我得到的一切: 当我在Eclipse中运行相同的Maven命令时,它显示以下内容: 这是我的pom.xml,供那些想要检查是否可能是问题的人使用: 问题答案: 您是说要添加为P

  • 我有一个这样的运行测试类。 我有4个cucumber功能文件在src/test/资源/功能。当我尝试运行此测试(4个cucumber功能)时,我得到了错误: 我试着给Cucumber选项一个完整的路径,但效果不太好。有人能帮我吗?非常感谢。

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

  • 问题内容: 我有一个Maven程序,它可以正常编译。当我运行它时,它不会运行任何测试(在TESTs标头下显示)。 我已经用一个超级简单的设置重新创建了这个问题,我将在下面以及运行时将其包括在内-X。 单元测试可以从eclipse正常运行(都使用其默认的junit软件包,而当我包括maven下载的junit.jar时)。而且可以在下正确创建该类。我在带有Maven 3.0.2和Java 1.6.0_