如何在内存数据库中编写测试用例?

3

我正在使用Oracle作为我的数据库,Spring Boot作为我的框架。

我不知道如何编写测试用例来检查数据库查询?我听说可以通过In-Memory Database实现。但是找不到一个合适的例子。

假设在我的代码中,我已经编写了一个SQL查询语句,SELECT * FROM tableName并且它返回了一个ResultSet对象。

那么,在编写测试用例时,我该如何检查呢?

我不想每次都进入数据库并获取查询结果。

我知道这是可能的,但我的问题是如何将查询结果替换为我将存储在任何文件中的虚拟结果。

提前致谢。


看过文档了吗?你尝试过什么? - Mike Tung
我认为你可以在单元测试的@Before块中创建一个初始的SQL脚本,并填充你的内存数据库(例如H2)。这有助于你了解当前数据库的实际状态。你可以根据你的领域模型改进这个初始脚本。 - MrFroll
你可以在这里找到有用的信息:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-initialize-a-database-using-hibernate - MrFroll
1
可能是您的答案 内存数据库 - Ravi Parekh
1个回答

3

您应该使用另一个Hibernate配置初始化您的SessionFactory,该配置使用H2内存数据库,例如test-hibernate.properties

hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.connection.url=jdbc:h2:mem:orm
javax.persistence.schema-generation.database.action=drop-and-create

然后在你的测试中,你可以像平常一样使用你的DAO。

如果你使用普通的JDBC,你可以按照以下方式创建到H2内存数据库的连接:

Connection connection = DriverManager.getConnection("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", "", "");

你需要添加H2数据库依赖项: https://mvnrepository.com/artifact/com.h2database/h2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接