当前位置:  开发笔记 > 编程语言 > 正文

JUnit用于数据库代码

如何解决《JUnit用于数据库代码》经验,为你挑选了2个好方法。

我一直在尝试实现单元测试,目前有一些代码可以执行以下操作:

    查询外部数据库,加载到feed表中

    查询视图,这是我的订阅源和数据表的增量,更新数据表以匹配订阅源表

我的单元测试策略是这样的:

我有一个测试数据库,我可以随意操作.

    在setUP()中,将一些数据加载到我的测试数据库中

    运行我的代码,使用我的测试数据库作为源

    检查数据表,检查计数和某些记录的存在/不存在

    清除测试数据库,加载不同的数据集

    再次运行代码

    再次检查数据表

显然,我将数据集加载到源数据库设置中,这样我就知道应该添加,删除,更新某些记录等.

看起来这有点麻烦,应该有一个更简单的方法吗?有什么建议?



1> David Carlso..:

您是否打算测试生成增量的视图,或者测试代码是否正确添加,删除和更新以响应视图?

如果要测试视图,可以使用DBUnit等工具使用各种数据填充Feed和数据表,这些数据的汇总值是您手动计算的.然后,对于每个测试,您将验证视图是否返回匹配集.

如果你想测试你的代码如何响应视图检测到的差异,我会尝试抽象出数据库访问.我想象一个java方法,你可以传递一个结果集(或POJO/DTO列表)并返回一个参数对象数组列表(再次,或POJO),以便添加.其他方法将解析差异列表以删除和更新项目.然后,您可以创建模拟结果集或pojo,将它们传递给您的代码并验证是否返回了正确的参数.所有没有触及数据库.

我认为关键是将您的流程分解为多个部分,并尽可能独立地测试每个部分.



2> Brian Matthe..:

DbUnit将满足您的需求.需要注意的一点是,他们已经转而使用SLF4J作为他们的日志外观而不是JCL.您可以配置SLF4J以将日志记录转发到JCL,但是如果您在默认情况下在其Nop日志提供程序中使用Maven DbUnit,则会收到警告,因此您必须使用排除项,我最近在博客中讨论了此冲突.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有