单元测试数据访问层 - 测试更新方法?

Posted

技术标签:

【中文标题】单元测试数据访问层 - 测试更新方法?【英文标题】:Unit Testing the Data Access Layer - Testing Update Methods? 【发布时间】:2009-05-15 17:11:21 【问题描述】:

我正在考虑为我的数据访问层中的某些类添加一些单元测试,并且我正在查看一个没有返回值的更新例程。它只是根据您在您提供的任何列名称处提供的 id 更新一行。

在这个方法内部,我们收集参数并将它们传递给一个辅助例程,该例程调用存储过程来更新表。

在这种情况下如何进行单元测试有推荐的方法吗?我很难想出一个不依赖于其他方法的测试。

【问题讨论】:

【参考方案1】:

首先测试从数据库中读取数据的方法。

然后就可以调用更新函数,使用上面测试过的函数,验证更新的值是否正确。

我倾向于在我的单元测试中使用其他方法,只要我有测试也可以测试那些被调用的方法。

如果您的辅助函数在数据库中(存储过程或函数),那么只需先使用 DatabaseUnitTest 测试它们,然后测试 Visual Basic 代码。

【讨论】:

【参考方案2】:

我将只使用查找方法来验证数据是否已正确更新。

是的,从技术上讲,这将依赖于正常工作的查找方法,但我认为您不一定必须避免这种依赖性。只需确保也测试了查找方法。

【讨论】:

【参考方案3】:

我将使用该方法获取该数据并检查您更新的返回值并断言预期值。这确实假设用于检索数据的方法已经过测试并且可以正常工作。

【讨论】:

【参考方案4】:

我使用休眠和事务,对于单元测试,我不提交到数据库,但我刷新会话,如果需要,它会给出相同的错误,但不写入数据。

当然,如果您有一个构建服务器,您只需针对一个新制作的数据库运行单元测试,该数据库在每次构建时都是新制作的。尝试使用基于文件的数据库,例如 firebird 之类的。

【讨论】:

以上是关于单元测试数据访问层 - 测试更新方法?的主要内容,如果未能解决你的问题,请参考以下文章

我应该对数据访问层进行单元测试吗?这是一个好习惯以及如何去做?

数据访问层的单元测试

领域驱动单元测试详解

您会将啥放入存储库类(数据访问层)的单元测试中?

是否有必要为 n 层架构上的每一层编写单元测试代码?

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