使用服务层模拟创建控制器测试,它将运行实际容器(例如,tomcat,可能会更改spring上下文文件)

时间:2016-03-04 15:14:08

标签: java spring unit-testing

我有一个使用此图层的应用程序

  1. 使用Jersey编写的资源(控制器/端点),
  2. 服务,我有服务接口及其实际实现。在资源中,我使用@Autowired Spring注释来设置服务接口的实现实例/ bean。
  3. 我想使用Spring,JUnit,Mockito等编写测试,它将运行tomcat(或其他容器),然后模拟服务并运行测试。 我已经使用存根来做它,但我认为应该有一种方法而不使用stabs。它正在运行灰熊,将上下文替换为测试上下文(上下文不包括服务实现包而不是使用存根包),将模拟服务设置为存根,之后我可以模拟服务,并喜欢通常的单元测试测试端点

    任何想法如何在不使用存根的情况下做到这一点(直接插入模拟服务的资源)?

1 个答案:

答案 0 :(得分:1)

如果您使用Springs MockMvc,则可以调用HTTP端点并拥有对服务实例的完全访问权限。因此,您可以将您的服务注入JUnit测试类,并根据需要使用您的模拟处理它们。 因此无需启动tomcat,这使得测试更快,调试更容易。 这种方法要求你的端点是带有@RequestMapping的Spring控制器中的方法,这是你现在使用的,而不是Jersey。 但我可以真正重新调整它,效果很好。