SpringBoot 中测试类找不到主配置类
SpringBoot 中测试类找不到主配置类
在使用 @SpringBootTest 注解进行 Spring Boot 测试时,特别是在多模块开发中,容易出现 Spring Boot 无法找到主配置类(主配置类通常是指带有@SpringBootApplication注解的类)。如下:
@SpringBootTest
class WeChatServiceImplTest {
@Autowired
private IWeChatService weChatService;
@Test
void getPhoneNumber() {
System.out.println(weChatService.getPhoneNumber("Service"));
}
}

这个错误提示表明在运行测试时,Spring Boot 无法找到一个带有 @SpringBootConfiguration 注解的类来确定应用程序的上下文。通常,Spring Boot 测试需要能够找到主应用程序类(通常是带有 @SpringBootApplication 注解的类),以便正确地加载应用程序上下文。
可以通过以下几种方式来解决这个问题:
-
确保主应用程序类存在:确保你的项目中有一个主应用程序类,该类通常位于项目的根包下,并带有
@SpringBootApplication注解。Spring Boot 会自动查找这个类。 -
使用
@SpringBootTest(classes = ...)指定主类:如果你的主应用程序类不在自动查找的路径下,或者你希望明确指定,可以在@SpringBootTest注解中使用classes属性来指定主类。例如:@SpringBootTest(classes = YourMainApplicationClass.class) class WeChatServiceImplTest { @Autowired private IWeChatService weChatService; @Test void getPhoneNumber() { System.out.println(weChatService.getPhoneNumber("Service")); } }请将
YourMainApplicationClass替换为你的实际主应用程序类名。 -
使用
@ContextConfiguration指定配置类:如果你有自定义的配置类,可以使用@ContextConfiguration注解来指定它们。例如:@SpringBootTest @ContextConfiguration(classes = {YourMainApplicationClass.class, YourMainApplicationClass.class}) class WeChatServiceImplTest { @Autowired private IWeChatService weChatService; @Test void getPhoneNumber() { System.out.println(weChatService.getPhoneNumber("Service")); } }同样,将
YourMainApplicationClass和YourCustomConfigClass替换为你的实际类名。
通过上述方法之一,应该能够解决 Unable to find a @SpringBootConfiguration 的错误。

浙公网安备 33010602011771号