java - 如何使用内存数据库编写测试用例?

标签 java oracle unit-testing testng in-memory-database

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

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

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

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

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

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

提前致谢

最佳答案

您应该使用另一个使用 H2 内存数据库的 hibernate 配置初始化您的 Hibernate SessionFactory,例如 test-hibenate.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

关于java - 如何使用内存数据库编写测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49337822/

相关文章:

java - 如何避免在多用户环境中编辑表单中的相同值?

java - ORA-01810 : format code appears twice : jdbctemplate

oracle - "who_called_me"相当于 Hibernate

ios - 获取代码覆盖率统计 IOS

java - 可点击的图像按钮

java - 处理 SwingWorker.doInBackground 引发的异常的正确方法

java - 如何向 Android 构建添加额外的二进制文件?

sql - 如何在oracle sql的WHERE IN子句中传递变量?

unit-testing - 系统配置验证测试/方法/工具

c# - 使用 Azure DocDB 创建用于单元测试的 ResourceResponse 对象