我无法在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会做:
@WebMvcTest
@Controller
@RestController
@JsonComponent
现在为什么我需要配置一个“超级”类
搜索算法从包含测试的程序包开始工作,直到找到@SpringBootApplication或@SpringBootConfiguration注释的类。只要您以合理的方式构造代码,通常就可以找到您的主要配置。
因此,您已使用 @ * Test 注释了 测试 。它运行,检查子类中的配置,未发现任何异常,引发异常。
您必须在测试类的程序包或子程序包中有一个配置,或者将配置类直接传递到@ContextConfiguration,@SpringBootTest或将其注释为@SpringBootApplication。
@ContextConfiguration
@SpringBootTest
@SpringBootApplication
据@SpringBootApplication。我已经用您提到的方式对控制器进行了测试@WebMvcTest:如果应用程序将类标注为@SpringBootApplication,它将起作用,并且如果没有提到您的异常,则它将失败。这里提到您提到的文章:
在此示例中,我们省略了类,这意味着测试将首先尝试从任何内部类中加载@Configuration,如果失败,它将搜索您的主要@SpringBootApplication类。
Github 关于这一点的讨论。
Spring Boot文档