【发布时间】:2015-10-17 00:02:13
【问题描述】:
如果我想在 spring 中对我的 dao 类进行单元测试,我是只调用我的服务方法并对其进行测试,还是将服务方法与实际的 dao 方法分开测试?
我还应该模拟 dao 调用还是实际使用像 H2 这样的内存数据库?我认为这更像是一个集成测试,尽管一些教程会这样做,或者标准方法是使用模拟数据库对象进行服务测试并在测试 dao 调用时使用 H2?
最后.. 我的应用程序有一个使用 Spring REST 模板从 Web 前端调用的 REST API,因此只有 API Web 应用程序可以访问数据库。
我是否会使用模拟对象测试每个 Web 应用程序中的其余方法,然后启动一个 tomcat 实例并在两个应用程序之间进行集成测试?如果我使用 tomcat 并在应用程序之间运行集成测试,是否会在 API 应用程序中连接数据库或模拟对象?
测试来自 Web 应用程序的其余调用实际上取决于 API 应用程序的 rest 方法如何响应,所以这甚至值得单独测试吗?
我发现单元测试相当混乱,因为其中一些似乎几乎是集成测试。
如果您在内存中针对 H2 运行集成测试,但实际上我会使用 MySQL,这有关系吗?
【问题讨论】:
-
我个人只会使用 Spring Data 而完全避免实现和测试我自己的 DAO 类。
-
@chrylis:这是一个相当大的假设,即 Spring Data 适合 OP 用例。
标签: spring unit-testing dao resttemplate