【发布时间】:2020-07-13 20:37:18
【问题描述】:
我正在 Spring Boot 2.2.6 上尝试 JUnit 5 和 Cucumber,并且在我的应用程序中需要 BDD 场景和单元测试。我已经创建了一个虚拟 ping 控制器对应的功能文件,可以。
运行 mvn clean test 时不会调用 Cucumber 测试。仅调用 JUnit 测试。但是,当单击CucumberTest.java 的Run 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() {
}
}
CucumberTest.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 {
}
PingTest.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() {
...
}
}
我错过了什么?
【问题讨论】:
-
听起来你不知何故错过了
junit-vintage。是否仍然执行常规的 JUnit 4 测试? -
您还在
DummyApplicationTests中混合了 JUnit 4 和 JUnit 5 -
我排除了年份如下:
<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 4 测试。仅执行 JUnit 5 测试。你能详细说明什么是混合的吗? -
我删除了
@RunWith(SpringRunner.class),但还是一样。 -
似乎没有集成 JUnit 5 支持,我不得不包括 junit-vintege。 RunWith 是一个 Junit 4 注释。
标签: java spring spring-boot cucumber junit5