MySQL 在 Spring Boot 中使用嵌入式数据库进行测试

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();
    }
}

这个测试代码非常简单,我们首先创建了一个用户,然后获取用户列表,看看是否能够正确获取到。

总结

使用嵌入式数据库进行测试非常方便,能够快速地验证代码是否正确,而不需要准备一个真实的数据库实例。只需要引入依赖,配置数据源即可使用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程