gpt4 book ai didi

unit-testing - DAO 单元测试

转载 作者:行者123 更新时间:2023-12-03 11:33:27 29 4
gpt4 key购买 nike

我一直在查看 EasyMock 和教程/示例,将它用于单元测试 DAO 类,用于“外部容器”测试。但是,我认为他们中的大多数人都在谈论测试服务层,而不是模拟 DAO 类。我有点困惑,难道你真的是如何对DAO层进行单元测试吗?

有些人会说与 DB 和 EJB 交互的测试实际上是集成测试而不是单元测试,但是你怎么知道你的 SQL 是否正确(假设没有 ORM)并且你的 DAO 从你的真实数据中插入/查询正确的数据(阅读,本地数据库(类似于生产中的数据库)数据库?

我读到 DBUnit 是这种情况的解决方案。但我的问题是关于使用像 DBUnit“外部容器”这样的框架。如果 DAO 依赖于一些 EJB,我们如何处理事务,如果有触发器更新插入中的其他表会发生什么?

仅对具有此类依赖性的 DAO 进行单元测试的最佳方法是什么?

最佳答案

就我个人而言,我通过访问某种测试数据库来对 DAO 进行单元测试,最好是您的应用程序在生产中使用的相同类型的数据库(显然不是 SAME 数据库)。

我认为如果你这样做,测试更像是一个集成测试,因为它依赖于正在运行的数据库。这种方法的好处在于它尽可能接近您正在运行的生产环境。它的缺点是您需要测试配置,您需要一个正在运行的测试数据库(在您的机器本地或您环境中的某个地方),并且测试可能需要更长的时间才能运行。您还需要确保在测试执行后回滚测试数据。

一旦 DAO 被测试,一定要模拟它们来对你的服务进行单元测试。

关于unit-testing - DAO 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807414/

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