【发布时间】:2023-03-28 02:10:01
【问题描述】:
我有一个 DAO 服务,它可以检索数据并将其保存到 Hibernate。 任何人都可以指出我使用 JUnit 来测试这种服务的方法。
最佳做法是什么?我什么时候应该通过测试失败测试,我应该测试异常?
【问题讨论】:
标签: unit-testing hibernate junit java
我有一个 DAO 服务,它可以检索数据并将其保存到 Hibernate。 任何人都可以指出我使用 JUnit 来测试这种服务的方法。
最佳做法是什么?我什么时候应该通过测试失败测试,我应该测试异常?
【问题讨论】:
标签: unit-testing hibernate junit java
您应该测试 DAO 中的所有可能路径。您肯定会使用内存数据库进行测试,例如 HSQLDB。
一种策略是在您的 setUp() 方法中为数据库提供一些初始数据并在 tearDown() 上清理它,这样所有测试都有一个一致的工作环境。
通过这些设置,您基本上可以完成所有操作...例如,如果您想在 DAO 中测试 save() 方法,只需添加新元素并确保您的表现在还有一个元素。此外,获取该元素并将其与您插入的元素进行比较,它显然应该是相同的。
请记住,您应该始终测试所有可能的路径。
【讨论】:
我还会考虑使用DBUnit 来确保您的数据库是一致的并且独立于测试。他们有关于如何开始的文章和教程。您可能还想阅读很多articles on IBM's DeveloperWorks 博客。
【讨论】:
我认为使用内存数据库通常是一个好主意 - 用于单元测试。但理想的做法是将快速单元测试与此类数据库与针对真实数据库的集成测试相结合。例如,Hypersonic SQL 和大多数生产服务器之间存在细微差别。
考虑使用模拟来测试您的错误处理(即模拟 Hibernate 会话对象并使其针对某些操作抛出异常)
【讨论】: