kam*_*aci 5 java spring cucumber spring-boot junit5
我正在 Spring Boot 2.2.6 上尝试 JUnit 5 和 Cucumber,并且在我的应用程序中需要 BDD 场景和单元测试。我已经创建了一个虚拟 ping 控制器对应的功能文件,这些文件都可以。
运行时不会调用 Cucumber 测试mvn clean test。仅调用 JUnit 测试。但是,当单击Run Test按钮时,我可以从 Intellij GUI 运行 Cucumber 场景CucumberTest.java。
这是我的课程:
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() {
}
}
Run Code Online (Sandbox Code Playgroud)
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 {
}
Run Code Online (Sandbox Code Playgroud)
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 {
}
Run Code Online (Sandbox Code Playgroud)
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() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
如果您刚刚升级到 Spring 2.4.0 并且 maven 没有运行您的集成测试,那是因为:
Cucumber 基于 JUnit 4。如果您使用的是 JUnit 5,请记住也要包含 junit-vintage-engine 依赖项。有关更多信息,请参阅 JUnit 5 文档。
黄瓜文档
从Spring Boot 2.4.0 参考你可以修复它如下:
如果您有使用 JUnit 4 的测试,则可以使用 JUnit 5 的老式引擎来运行它们。要使用老式引擎,请添加对 junit-vintage-engine 的依赖,如以下示例所示:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |