一尘不染

在Spring Boot Test 1.4中找不到SpringBootConfiguration

spring-boot

我无法在Spring Boot 1.4中运行简单的测试。我遵循了官方网站testing-the-spring-mvc-
slice上
的教程,但没有成功。

每次我得到以下错误:

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

有什么想法,提示吗?

提前致谢

编辑:

这是控制器

@Controller
public class UserManagementController {

@GetMapping(value = "/gs/users/getUsers")
    public @ResponseBody String getAllUsers() {
        return "test";
    }
}

这是测试

@RunWith(SpringRunner.class)
@WebMvcTest(UserManagementController.class)
public class UserManagementControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void showUserView() throws Exception {
        this.mvc.perform(get("/gs/users/getUsers"))
            .andExpect(status().isOk())
            .andDo(print());
    }
}

从我的角度来看,这与该站点的帖子完全一样。

@WebMvcTest会做:

  • 自动配置Spring MVC,Jackson,Gson,消息转换器等
  • 加载相关组件(@Controller@RestController@JsonComponent等)
  • 配置MockMVC

现在为什么我需要配置一个“超级”类


阅读 768

收藏
2020-05-30

共1个答案

一尘不染

搜索算法从包含测试的程序包开始工作,直到找到@SpringBootApplication或@SpringBootConfiguration注释的类。只要您以合理的方式构造代码,通常就可以找到您的主要配置。

因此,您已使用 @ * Test 注释了 测试 。它运行,检查子类中的配置,未发现任何异常,引发异常。

您必须在测试类的程序包或子程序包中有一个配置,或者将配置类直接传递到@ContextConfiguration@SpringBootTest或将其注释为@SpringBootApplication

@SpringBootApplication。我已经用您提到的方式对控制器进行了测试@WebMvcTest:如果应用程序将类标注为@SpringBootApplication,它将起作用,并且如果没有提到您的异常,则它将失败。这里提到您提到的文章:

在此示例中,我们省略了类,这意味着测试将首先尝试从任何内部类中加载@Configuration,如果失败,它将搜索您的主要@SpringBootApplication类。

Github 关于这一点的讨论

Spring Boot文档

2020-05-30