单元测试 DAO

Posted

技术标签:

【中文标题】单元测试 DAO【英文标题】:unit testing DAOs 【发布时间】:2011-04-11 06:23:48 【问题描述】:

假设我正在为 UserDAO 做单元测试方法。我正在为 UserDao 的删除方法编写测试。我会先在数据库中插入一个用户,然后调用删除方法,并验证该对象是否仍然存在。

我的问题是:对于删除单元测试,当我插入一个用户进行测试时,我应该调用 UserDao 的插入方法...还是不要调用我的对象的任何方法? m 测试并使用native方式,比如使用jdbc进行插入,然后调用我的删除方法?

【问题讨论】:

【参考方案1】:

DAO 通常太简单而无法破解,那么我认为不值得将资源花在测试上。你的解释看起来是这样的。

只有在涉及一些逻辑(一起构建更复杂的查询)时,我才会考虑测试一些部分。

也许提供一些代码 sn-ps 来帮助更多。

【讨论】:

【参考方案2】:

使用DBUnit 或类似的东西来设置测试数据。 DBUnit 允许您指定为测试插入哪些测试数据,您甚至可以指定一个干净的插入来删除所有内容(从为其指定了测试数据的表中),然后只插入您想要的内容。最好是测试彼此独立,您不希望插入代码出现问题而导致依赖于它进行设置的其他测试出现问题。

【讨论】:

我肯定会检查一下,但我想答案并没有回答我的问题。我想如果不使用 DBUnit,你会如何回答我的问题。 没有 DBUnit,我仍然希望有一种方法可以在每次测试之前清理数据库并设置数据,以便它们具有明确的启动状态并且不依赖于顺序。这意味着我仍然希望避免使用 dao 插入数据,因为它不那么明确。

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

DAO(又名存储库)是不是应该进行单元测试?

如何组织或分类单元测试 DAO 搜索方法

如何在 Java 中对 DAO 应用单元测试

对单元测试 DAO 的怀疑

在 DAO 单元测试期间恢复数据的策略是啥?

使用 Mockito 对 DAO 层进行单元测试