这可能是一个幼稚的问题,但我是新来的这两个JUnit和休眠的框架,我想知道怎么去单元的最佳方式测试在很大程度上是调用冬眠,或者如果它这样做甚至是必要的应用程序?
这里的最佳做法是什么?
编辑:
Spring似乎是这里的重要建议.不幸的是,对于一个项目而言,这可能是太过分了.JUnit中,Hibernate和Spring都是新的给我,虽然他们是我想在我的腰带让所有的技术,我想尝试将它们全部纳入一个项目可能是我过于庞大.
欢迎链接到教程和/或书籍建议.
请记住单元测试和集成测试之间的区别.
单元测试应该是测试代码而没有任何外部依赖性.使用类似于JMock的框架来模拟这些依赖项.
集成测试也很重要,但它们的主要缺点是它们需要很长时间才能运行.您可以在几秒钟内运行数千个真正的单元测试,但它与集成测试不同.
根据项目/开发团队的规模,您可能希望优先考虑真正的单元测试而不是集成测试.这两种测试方式都很重要,但如果您需要资源,那么单独进行单元测试可能是个更好的主意.
我自己编写了一个应用程序,单元测试了Web(使用Spring MVC这很容易)和Service层,以及域对象.但是我独自留下了DAO,因为我不想写一堆缓慢的集成测试.如果我有更多的员工,我也会参加集成测试,但在这种情况下,我觉得花的时间不值得.
至于最佳做法:
如果可能,使用嵌入式数据库来运行测试,这样您就不需要完整部署的关系数据库来运行测试(在本地,或者在连续构建服务器上,如果有的话).这样你也不需要(必然)担心回滚等,你可以在需要时重新创建数据库.使用嵌入式数据库进行测试不会测试使用特定生产数据库时可能出现的特性,但它会测试您的代码,这应该足够了.
在运行Hibernate测试之前,您还可以使用DbUnit(JUnit的扩展)轻松地使用预期的行填充数据库并将其置于已知状态.