gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:17:45 25 4
gpt4 key购买 nike

我有一个包含此层的应用程序

  1. 使用 Jersey 编写的资源( Controller /端点),
  2. 服务,我有服务接口(interface)及其实际实现。在资源中,我使用 @Autowired Spring 注释来设置服务接口(interface)及其实现实例/bean。

我想使用 Spring、JUnit、Mockito 等编写测试,它将运行 tomcat(或其他容器),然后模拟服务并运行测试。我已经使用 stub 做到了,但我认为应该有一种不使用 stub 的方法。它正在运行灰熊,替换上下文来测试上下文(上下文不包括服务实现包,而不是使用 stub 包),将模拟服务设置到 stub 中,之后我可以模拟服务并像通常的单元测试一样测试端点。

知道如何在不使用 stub 的情况下做到这一点(在资源中直接插入模拟服务)吗?

最佳答案

如果您使用 Springs MockMvc,您可以调用 HTTP 端点并拥有对服务实例的完全访问权限。因此,您可以将服务注入(inject)到 JUnit 测试类中,并根据需要使用模拟来处理它们。所以不需要启动tomcat,这使得测试速度更快,调试更容易。这种方法要求您的端点是 Spring Controller 中带有 @RequestMapping 的方法,这与您现在使用的 Jersey 不同。但我真的可以推荐它,效果很好。

关于java - 使用服务层模拟创建 Controller 测试,该测试将运行实际容器(例如 tomcat,可能会更改 spring 上下文文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35799465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com