gpt4 book ai didi

java - 在 Java 中测试服务/DAO 层的工具和方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:49:46 25 4
gpt4 key购买 nike

我正在尝试找出测试服务和 DAO 层的最佳方法。所以,几个子问题...

  1. 测试服务层时,最好是针对模拟 DAO 层还是指向测试环境的“实时”DAO 层进行测试?
  2. 当唯一的测试数据库在共享环境(Oracle/DB2)时,DAO层的SQL应该如何测试
  3. 您如何解决任何 DAO 写入/更新都需要用 DAO 读取进行测试的悖论,而 DAO 读取也必须进行测试?

我正在寻找这方面的任何好的文档、文章或引用资料,以及任何有助于自动化流程的工具。我已经知道用于单元测试的 JUint 和用于 CI 的 Hudson。

最佳答案

获取Growing Object-Oriented Software, Guided by Tests .它有一些关于如何测试数据库访问的重要提示。

就个人而言,我通常将 DAO 测试分解为 2 个,一个是使用模拟数据库的单元测试,用于测试 DAO 上的功能,另一个是集成测试,用于测试对数据库的查询。如果您的 DAO 只有数据库访问代码,则不需要单元测试。

我采纳的书中的一个建议是(集成)测试必须将更改提交到数据库。在使用 hibernate 并发现测试被标记为回滚并且数据库从未获得插入语句之后,我已经学会了这样做。如果您使用触发器或任何类型的验证(甚至 FK),我认为这是必须的。

另一件事,远离 dbunit,它是开始工作的一个很好的框架,但是当一个项目变得非常小时它就会变得糟糕。我在这里的偏好是拥有一组 Test Data Builder类来创建数据,并将其插入测试设置或测试本身。

并检查 dbmigrate,它不是用于测试,但它会帮助您管理脚本以升级和降级您的数据库模式。

在共享数据库服务器的场景中,我为每个环境创建了一个架构/用户。由于每个开发人员都有自己的“本地”环境,因此他也拥有一个模式。

关于java - 在 Java 中测试服务/DAO 层的工具和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156721/

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