【问题标题】:How to write in test case with in-memory-database?如何使用内存数据库编写测试用例?
【发布时间】:2018-08-26 12:41:40
【问题描述】:

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

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

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

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

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

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

提前致谢

【问题讨论】:

  • 阅读文档?你试过什么?
  • 我认为您可以创建一个初始 SQL 脚本并在单元测试的 @Before 块中填写您的内存数据库(例如 H2)。它可以帮助您了解数据库的当前实际状态。您可以通过改进域模型来修改此初始脚本。
  • 可能是你的答案In memory DB

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


【解决方案1】:

您应该使用另一个使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多