如何在没有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查询是不够的。我希望能够测试它在数据库中的工作原理。我怎样才能做到这一点?
答案
- 设置数据库。如果编写标准SQL而不依赖于特定于数据库的功能,则可以使用内存数据库,如H2。
- 设置指向数据库的
DataSource
对象。这比你现在在DAO中使用的ConnectionFactory
更好。您不希望始终建立新的物理连接,因为这很昂贵。 - 在您的生产代码中使用合并的
DataSource
,例如HikariCP并且可能在测试代码中使用更简单的东西,例如SingleConnectionDataSource
以上是关于如何在没有ORM的情况下对DAO进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章