DAO 测试的优雅方式

Posted

技术标签:

【中文标题】DAO 测试的优雅方式【英文标题】:Elegant way for DAO testing 【发布时间】:2017-08-27 05:24:06 【问题描述】:

我想改进我的数据库访问代码测试。

我正在使用 GAE 数据存储。为了测试 Db 类,我使用了 Backdoor Servlet。只是想知道,有没有更高效和优雅的方式来进行 DAO 测试? 您对 DAO 的单元测试与集成测试有何看法?

【问题讨论】:

【参考方案1】:

这在一定程度上取决于您的数据库是如何设置的。除了您已有的选项之外,还有其他几个选项:

您可以直接针对您的 DAO 编写单元测试。您可以使用 mockito 模拟数据库调用。 您可以编写记录与数据库集成的单元测试,然后在您第二次运行测试时重放它。请参阅 betamax 库。 您可以针对实际数据库运行单元测试。现在它不再是单元测试,而是一种集成测试。在这种情况下,您需要考虑如何在数据库中获得一个干净的状态来开始。 您可以对整个系统运行集成测试,并确保使用代码覆盖工具触及大部分数据库代码。

我更喜欢对整个事物进行全面的集成测试,包括数据库和任何其他第三方集成。并对细节进行单元测试,但不一定涉及实际的数据库调用。但是 - 一如既往 - 您的设置可能会将您引向其他方向。

【讨论】:

以上是关于DAO 测试的优雅方式的主要内容,如果未能解决你的问题,请参考以下文章

使用Dozer优雅的将DO转换成VO

优雅单测-3用Mockito轻松解决复杂的依赖问题

Java如何优雅地实现单元测试与集成测试

优雅高效的MyBatis-Plus工具快速入门使用

Java应该如何优雅地实现单元测试与集成测试

在 Flutter 和 Dart 中重构小部件的最优雅/高效的方式