gpt4 book ai didi

java - @SpringBootTest(classes = SomeController.class) 和@WebMvcTest(SomeController.class) 的区别

转载 作者:行者123 更新时间:2023-12-02 16:15:57 24 4
gpt4 key购买 nike

我知道使用 @SpringbootTest 我在测试期间提高了整个 spring contex,或者在我的情况下使用 @SpringBootTest(classes = SomeController.class) 我只提高了一个 bean -> 一些 Controller 。如果这个 Controller 有一些依赖项,我需要模拟它们。使用注释 @WebMvcTest(SoneController.class) 我将(根据我的知识)实现相同的目标。

问题是:提供的示例中使用的这两个注释之间是否有任何区别?

最佳答案

@SpringBootTest(classes = SomeController.class) 之间有明显区别和 @WebMvcTest(SomeController.class) .

  • @SpringBootTest(classes = SomeController.class) - 使用组件启动服务器(即像 Tomcat)+ spring 应用程序上下文 SomeController.class .除了 Controller 之外,您通常应该指定上下文配置以成功启动整个应用程序(例如:当您不指定 classes 时,它会回退到 @SpringBootApplication)。

  • @WebMvcTest(SomeController.class) - 仅使用 SomeController.class 启动应用程序的 web 层 .

有什么区别?

@SpringBootTest测试通常是集成测试,您启动完整的 spring-boot 应用程序并针对该黑盒进行测试。您仍然可以通过在注释参数中提供配置、属性、Web 服务器类型等来调整应用程序启动。

但是@WebMvcTest(SomeController.class)通常是 Controller 的单元测试。它们重量轻且速度快。 @Service 之类的依赖项在此类测试中模拟类。

这是一个很好的起点 - https://spring.io/guides/gs/testing-web/

关于java - @SpringBootTest(classes = SomeController.class) 和@WebMvcTest(SomeController.class) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66736159/

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