当前位置: 首页 > 知识库问答 >
问题:

@webmvctest在spring boot测试中给出不同服务的“error creating bean with name”错误

澹台景辉
2023-03-14

我正在为我的spring boot应用程序编写测试。对于独立控制器测试,我使用了@html" target="_blank">webmvctest,但遇到了一些问题。下面是代码的基本结构。

UserController具有AutoWired UserService

LibraryController已自动连线LibraryService类。

下面是UserControllerTest::

@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
public class UserControllerTest {
   @Autowired
   private MockMvc mockMvc;
   
   @MockBean
    private UserService userServiceMock;

   @Test
   public void someTest(){}

}

它在UserControllerTest中运行代码时给出错误:

原因:org.springframework.beans.factory.unsatisfieddependencyexception:创建名为“Library Controller”的bean时出错:通过字段“Library Service”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory

按照我的理解,由于我们在@WebMVCTest注释中指定了UserController,所以我们只需要模拟该控制器所需的依赖关系。但它请求的是与UserController没有链接的libraryService。

是的,如果我们将库服务作为MockBean包含在测试中,那么它就可以正常工作。但如果是这种情况,我们必须在程序扩展时模拟每个autowired bean。

任何解释都很感谢。提前道谢。

共有1个答案

卜和悌
2023-03-14

您可能已经在主类上定义了以下注释之一:@ComponentSacn、@EnableJParepositores和@EntityScan。

例如,通过将@enablejparepositores放置在main类上,您表明必须始终启用JPA存储库,而不管您试图测试的是哪一部分功能。这同样适用于@ComponentScan和@EntityScan。

 类似资料:
  • 将@service添加到控制器后,单元测试失败。该项目是Spring-boot V2.0.1版本。我花了很多时间想找到答案,但没有成功。在我添加@service注释之前,测试工作正常,并且我的服务类在其中有一个存储库。 堆栈跟踪: 2018-04-24 12:57:12.487警告940--[main]O.s.w.cs.GenericWebApplicationContext:上下文初始化过程中遇

  • 我想在中测试我的restendpoint。我用编写了一个测试。 这是我在中的方法 现在,当我运行测试时,我得到一个错误 Spring Boot:v2.1.0.发行版 编辑:它起作用了。我怀念我的中的...我删除了这段代码,现在它起作用了

  • 我有一个Spring Boot应用程序(1.5.10.release),其中包含一个主程序(SpringBootApplication)如下所示: 存储库如下所示: A和B它们本身是JPA注释类。整个应用程序包含对数据库的访问。 此外,我有这样一个服务: XService不是通过@autowire或其他方式使用的(只需要删除它): 因此,我尝试运行AControllerTest,得到以下错误: j

  • 我已经按照这里描述的“测试Spring MVC切片”一节为Spring MVC控制器编写了一个测试类。类如下所示: 当我运行它时,我得到了以下错误: 有人能解释为什么@webmvctest注释对我不起作用吗?

  • controller.java UserServiceImpl.java 我得到了这个错误 应用程序启动失败 描述: 我使用的SpringBoot版本:2.1.0.发行版

  • 我在摆弄弹力靴,但每向前走一步,就会让我后退两步。 我将我的简单应用程序与Springboot连接在一起,但我没有得到这个错误: 还有这一点: 我不用任何数据库。应用程序非常简单。下面是主要的类: 下面是其他两个类和: 就是这样。尽管它可能很简单。 下面是文件结构以及build.gradle文件内容: 能有人请帮助我让这个小程序运行,指出我在正确的方向,以解决这个问题? 事先好心谢谢你。