MySQL 在 Spring Boot 中使用嵌入式数据库进行测试
在本文中,我们将介绍如何在 Spring Boot 中使用嵌入式 MySQL 数据库进行测试。
阅读更多:MySQL 教程
准备工作
我们需要引入以下依赖:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>test</scope>
</dependency>
其中,h2
为嵌入式数据库,mysql-connector-java
为 MySQL 数据库连接器。
然后在 application.properties
文件中配置数据源:
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
这样设置后就可以使用嵌入式数据库进行测试了。
测试代码
我们可以编写一个简单的 DAO:
@Repository
public class UserRepository {
@Autowired
private JdbcTemplate jdbcTemplate;
public void createUser(String name, int age) {
jdbcTemplate.update("INSERT INTO user (name, age) VALUES (?, ?)", name, age);
}
public List<String> getUsers() {
List<String> users = jdbcTemplate.query("SELECT name FROM user", (rs, rowNum) -> rs.getString("name"));
return users;
}
}
然后编写单元测试:
@SpringBootTest
class UserRepositoryTest {
@Autowired
UserRepository userRepository;
@Test
void testCreateUser() {
userRepository.createUser("Alice", 20);
List<String> users = userRepository.getUsers();
assertThat(users.size()).isEqualTo(1);
assertThat(users.contains("Alice")).isTrue();
}
}
这个测试代码非常简单,我们首先创建了一个用户,然后获取用户列表,看看是否能够正确获取到。
总结
使用嵌入式数据库进行测试非常方便,能够快速地验证代码是否正确,而不需要准备一个真实的数据库实例。只需要引入依赖,配置数据源即可使用。