对休眠驱动的应用程序进行单元测试?[已关闭]

2022-09-01 06:12:00

这可能是一个天真的问题,但我对 junit 和 hibernate 框架都不熟悉,我想知道对主要调用休眠的应用程序进行单元测试的最佳方式是什么,或者是否有必要这样做?

这里的最佳实践是什么?

编辑:
春天似乎是这里的大建议。不幸的是,对于一个项目来说,这可能有点太多了。Junit,Hibernate和Spring对我来说都是新的,虽然它们都是我想要的技术,但我认为试图将它们全部整合到一个项目中对我来说可能太压倒性了。

欢迎提供教程和/或书籍建议的链接。


答案 1

请记住单元测试和集成测试之间的区别。

单元测试应该在没有任何外部依赖项的情况下测试代码。这些依赖关系是使用诸如JMock之类的框架来模拟的。

集成测试也很重要,但它们的主要缺点是它们需要很长时间才能运行。您可以在几秒钟内运行数千个真正的单元测试,但这与集成测试不同。

根据项目/开发团队的规模,您可能希望将真正的单元测试优先于集成测试。这两种测试风格都很重要,但是如果你的资源压力很大,那么进行单元测试可能是一个更好的主意。

我自己写了一个应用程序,单元测试了Web(使用Spring MVC这很容易)和服务层,以及域对象。但是我放弃了DAO,因为我不想写一堆缓慢的集成测试。如果我有更多的员工,我也会参加集成测试,但在这种情况下,我觉得花费的时间不值得。


答案 2

至于最佳实践:

如果可能,请使用嵌入式数据库来运行测试,这样就不需要完全部署的关系数据库来运行测试(本地或连续生成服务器,如果有)。这样,您也不需要(必然)担心回滚等,您可以在需要时重新创建数据库。使用嵌入式数据库进行测试不会测试使用特定生产数据库时可能出现的特殊性,但它确实会测试您的代码,这应该足够了。

在运行休眠测试之前,还可以使用 DbUnit(JUnit 的扩展)轻松地用预期的行填充数据库并将其置于已知状态。


推荐