带有spring JDBC模板的DAO:单元测试的最佳方式

时间:2011-10-19 17:41:10

标签: unit-testing

使用Spring JDBC模板构建单元/集成测试DAO层类的最佳方法是什么?

我想到了三种方法:

1)模拟库(EasyMock,JMock,Mockito等) - Spring框架测试代码使用这种方法 - 他们使用EasyMock。

2)嵌入式数据库(H2,HSQL,Derby)

3)真实数据库 - 与生产中使用的产品相同,在我的情况下是Sybase ASE - 显然是不同的模式。

Cons:
1)This may slow down unit test execution.
2)Schema is shared between different developers / CI server. So, need to make sure there is no concurrency issue.

有些人认为第一种和第二种方法并不是真正的测试。第二种方法的另一个问题是,我使用的数据库,Sybase ASE似乎与它们中的任何一个都不兼容。

想了解最佳做法。

感谢。

1 个答案:

答案 0 :(得分:0)

  • 如果你不做#1,你就不是真正的单元测试。
  • 我们的DAO一般非常薄,不需要单元测试,但我们对它们进行了大量集成测试,我们使用嵌入式数据库(H2)进行测试。
  • #3似乎不是一个好主意。据我所知,您正在讨论使用测试之间共享的单个“真实数据库”。这可能会让你头疼并且非常难以维护!测试需要孤立运行!