在 java 中使用 bdd 进行单元和集成测试:1. 安装依赖项,如 cucumber 和 junit;2. 编写描述预期行为的特征文件;3. 创建步骤定义将 gherkin 关键字映射到 java 代码;4. 使用 mvn test 运行 cucumber 测试。实战案例:1. 单元测试验证 userservice.getuserbyid 方法;2. 集成测试验证 usercontroller 创建新用户的 api。

在 Java 框架中使用行为驱动开发 (BDD) 进行单元和集成测试
BDD 是一种软件开发方法,它专注于通过编写描述预期行为的规范来测试应用程序。在 Java 中,可以通过使用诸如 Cucumber 和 JUnit 这样的工具来实现此方法。
安装依赖项
立即学习“Java免费学习笔记(深入)”;
首先,在应用程序中添加 Cucumber 和 JUnit 依赖项:
<dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>6.10.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> </dependency>
编写特征文件
特征文件描述了应用程序的预期行为。它们通常使用 Feature、Scenario 和 Given/When/Then 关键字编写。例如:
Feature: 登录功能 Scenario: 用户使用正确的凭证登录 Given 我已经访问登录页面 When 我输入用户名和密码并提交 Then 我应该重定向到仪表板
编写步骤定义
步骤定义将 Gherkin 关键字映射到 Java 代码。它们实现预期行为。例如:
@Given("我已经访问登录页面")
public void givenIHaveVisitedLoginPage() {
// 代码实现
}
@When("我输入用户名和密码并提交")
public void whenIEnterUsernameAndPasswordAndSubmit() {
// 代码实现
}
@Then("我应该重定向到仪表板")
public void thenIShouldBeRedirectedToDashboard() {
// 代码实现
}运行测试
使用以下命令运行 Cucumber 测试:
mvn test
实战案例:单元测试
考虑以下 Java 方法:
public class UserService {
public User getUserById(int id) {
// 代码实现
}
}以下单元测试使用 BDD 方法:
import static org.assertj.core.api.Assertions.assertThat;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
public class UserServiceStepDefs {
private UserService userService;
private User user;
@Given("a user with id {int} exists")
public void givenAUserWithIdExists(int id) {
user = new User(id, "John", "Doe");
}
@When("I get the user by id")
public void whenIGetTheUserById() {
user = userService.getUserById(user.getId());
}
@Then("the user's name should be {string}")
public void thenTheUsersNameShouldBe(String name) {
assertThat(user.getName()).isEqualTo(name);
}
}实战案例:集成测试
考虑以下 REST API 控制器:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import io.swagger.v3.oas.annotations.Operation;
import model.User;
@RestController
@RequestMapping("/api/users")
public class UserController {
@Operation(summary = "Create a new user")
@PostMapping
public User createUser(@RequestBody User user) {
// 代码实现
}
}以下集成测试使用 BDD 方法:
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerIntegrationTest {
@Autowired
private MockMvc mockMvc;
@Given("我提供一个新的用户")
public void givenIProvideANewUser() {
User user = new User(null, "John", "Doe");
}
@When("我创建新用户")
public void whenICreateANewUser() throws Exception {
mockMvc.perform(post("/api/users")
.contentType(MediaType.APPLICATION_JSON)
.content(ObjectMapper.writeValueAsString(user)))
.andExpect(status().isCreated());
}
@Then("新用户应该被创建")
public void thenTheNewUserShouldBeCreated() {
// 代码实现
}
}以上就是java框架中使用行为驱动开发(BDD)方法进行单元测试和集成测试的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号