Java Maven不运行cumber测试
我有一个Maven/SpringBoot2.3.3应用程序,其中包含JUnit5和Cucumber(v6.5.1)测试 问题是,我可以通过Maven运行OK单元测试和集成测试,但它不运行Cucumber 黄瓜赛跑者:Java Maven不运行cumber测试,java,spring,maven,junit,cucumber,Java,Spring,Maven,Junit,Cucumber,我有一个Maven/SpringBoot2.3.3应用程序,其中包含JUnit5和Cucumber(v6.5.1)测试 问题是,我可以通过Maven运行OK单元测试和集成测试,但它不运行Cucumber 黄瓜赛跑者: package cucumber.salad.api.integration.cucumber; import org.junit.runner.RunWith; import io.cucumber.junit.Cucumber; import io.cucumber.junit
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.xml中使用Surefire和Failsafe:
以下是项目存储库:
我运行的命令:
mvn clean test integration-test
但测试执行没有任何迹象
我遗漏了什么或者做错了什么?您使用的是cucumber junit,它集成了cucumber和junit 4。您也在使用JUnit5。JUnit5可以通过JUnit vintage引擎执行JUnit4测试。但是,您已将此引擎从类路径中排除
org.springframework.boot
如果您使用junit 5,那么您需要做的是添加两个cucumber依赖项(cucumber java和cucumber junit,通过从所有依赖项中排除junit 4),而不是cucumber junit
此外,进口junit vintage引擎,以便cucumber可以使用它
说明:
如果导入JUnit4,那么所有使用jupiter(JUnit5)的测试都将被忽略,反之亦然。您可以通过在junit的每个版本中添加两个类(通过在每个类上添加每个版本的@test)来测试它。只有一个版本会运行。我也有同样的问题;当我运行mvn test
命令时,cucumber测试没有执行。我使用的是:
- 弹簧靴:2.5.0
- Java11(OpenJDKZULU11.0.11)
- 依赖关系
- 黄瓜芯:6.10.4
- 黄瓜java:6.10.4
- 黄瓜幼树:6.10.4
- 黄瓜之春:6:10.4
我所做的是将junit jupiter引擎从spring boot starter测试
依赖项中排除
org.springframework.boot
弹簧起动试验
测试
org.junit.jupiter
朱尼特木星发动机
您是否尝试过最新的Spring Boot版本?我认为这是与JUnit/Cucumber/Surefire的依赖项不匹配。我正在最新的Spring Boot(2.3.3)上运行。我将尝试使用旧版本。好吧,我用Cucumber 6.4.0和6.6.0尝试了Spring Boot 2.2.9和2.3.3,但这里没有运气!伟大的你挽救了这一天。现在很好用。我用补丁推了一个新的分支:正确junit jupiter引擎的依赖性是罪魁祸首。