gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:14:16 27 4
gpt4 key购买 nike

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

最佳答案

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

关于java - 如何在没有 ORM 的情况下对 DAO 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49086612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com