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