无法在Spring Boot Test 1.4中找到SpringBootConfiguration

时间:2016-10-24 10:02:22

标签: spring spring-mvc testing spring-boot spring-test

我无法在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

现在为什么我需要配置一个" super"类

1 个答案:

答案 0 :(得分:11)

  

搜索算法从包含测试的包开始工作   直到找到@SpringBootApplication或@SpringBootConfiguration   注释类。只要你在合理的情况下构建代码   通常可以找到您的主要配置。

所以你用 @ * Test 注释了你的测试。它运行,检查子类中的配置,找不到任何,抛出异常。

您必须在测试类的包或子包中拥有配置,或者直接将配置类传递给@ContextConfiguration@SpringBootTest,或者使用@SpringBootApplication注释类。

根据@SpringBootApplication。我已经用@WebMvcTest提到的方式对控制器进行了测试:如果应用程序的类标注为@SpringBootApplication,则它会起作用,如果没有,则会失败,除非您提及。你提到的那篇文章有评论:

  

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

Github discussion关于同一点。

Spring Boot Documentation