以下是"Java Spring Boot实战练习之单元测试篇"的完整攻略,包含了步骤和示例。
1. 什么是单元测试
单元测试是一种测试方法,它用于测试整个系统或应用程序的一个单独模块或方法。单元测试是一种自动化测试方法,它能够验证代码、避免错误和缺陷,并将问题隔离到特定的代码块层面上。
2. 创建一个Spring Boot项目
在开始单元测试之前,需要先创建一个Spring Boot项目。可以使用Spring Initializr创建一个基本的Spring Boot项目。
- 打开Spring Initializr网站(https://start.spring.io/)。
- 选择一个“Project”类型(Maven或Gradle)。
- 添加所需的Spring Boot依赖(如Web、JPA等)。
- 单击“Generate”按钮并下载生成的项目文件。
- 打开一个IDE,导入项目并配置数据库连接等。
3. 创建测试类
在创建测试类之前,需要确保已经在项目的依赖关系中包括了JUnit测试框架。这可以通过在项目的Maven或Gradle build文件中添加依赖项来实现。
- 在测试文件夹中创建测试类。
- 注释测试类并使用@Test注释测试方法。
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testAddUser() {
User user1 = new User();
user1.setName("user1");
userService.addUser(user1);
assertNotNull(user1.getId());
}
}
4. 运行测试
测试类中有一个或多个测试方法,每个测试方法都使用JUnit的assertFalse、assertTrue、assertEquals等断言方法进行测试。执行测试的方法可以使用JUnit界面或在终端上运行Maven或Gradle构建。
- 在IDE中找到测试类并运行单元测试。
- 在终端上运行Maven或Gradle构建以执行测试。
示例1:测试一个service方法
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testAddUser() {
User user1 = new User();
user1.setName("user1");
userService.addUser(user1);
assertNotNull(user1.getId());
}
@Test
public void testGetUserById() {
User user1 = new User();
user1.setName("user1");
userService.addUser(user1);
User userReturned = userService.getUserById(user1.getId());
assertEquals(user1.getId(), userReturned.getId());
}
}
以上代码中,测试了UserService中的两个方法:addUser和getUserById。
示例2:测试一个Controller方法
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
public class UserControllerTest {
@Autowired
private MockMvc mvc;
@Autowired
private UserRepository userRepository;
@Test
public void testGetUsers() throws Exception {
User user1 = new User();
user1.setName("user1");
userRepository.save(user1);
mvc.perform(MockMvcRequestBuilders.get("/users"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$[0].name").value(user1.getName()));
}
}
以上代码中,使用MockMvc对UserController中的getUsers方法进行了测试,该方法返回所有用户的JSON数组。使用MockMvcRequestBuilders来构建HTTP GET请求,使用MockMvcResultMatchers来验证响应。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Spring Boot实战练习之单元测试篇 - Python技术站