如何在没有ORM的情况下对DAO进行单元测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在没有ORM的情况下对DAO进行单元测试相关的知识,希望对你有一定的参考价值。

我现在正在编写JAX-RS Web服务。我的数据库逻辑已划分为DAO接口(例如interface ItemDAO和具体实现class JDBCItemDAO),它们通过依赖注入注入我的控制器。现在,通过给他们模拟DAO对我的控制器进行单元测试相对简单。但是,我无法真正测试我的DAO,因为它们使用JDBC API,并且没有任何依赖项,除了ConnectionFactory(将java.sql.Connection返回给调用者)。我不能真正只是将模拟连接传递给DAO,因为只是验证DAO中的SQL查询是不够的。我希望能够测试它在数据库中的工作原理。我怎样才能做到这一点?

答案
  1. 设置数据库。如果编写标准SQL而不依赖于特定于数据库的功能,则可以使用内存数据库,如H2
  2. 设置指向数据库的DataSource对象。这比你现在在DAO中使用的ConnectionFactory更好。您不希望始终建立新的物理连接,因为这很昂贵。
  3. 在您的生产代码中使用合并的DataSource,例如HikariCP并且可能在测试代码中使用更简单的东西,例如SingleConnectionDataSource

以上是关于如何在没有ORM的情况下对DAO进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 UI 的情况下对钩子进行 Jest 测试

尝试对 DAO 类进行单元测试时,SessionFactory 没有自动装配

使用 JPA2 时如何对 EJB 进行单元测试?

使用 JPA2 时如何对 EJB 进行单元测试?

如何组织或分类单元测试 DAO 搜索方法

2编写单元测试用例,对用户注册功能的DAO层进行测试。(注意:测试用例应考虑成功和失败的情况)