SpringBoot Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration
背景:
spring boot 2.1.0 集成 mybatis-plus后,按照官方文档的例子,在父模块里,写了一个单元测试,如下:
@RunWith(SpringRunner.class) @SpringBootTest() public class SampleTest { private static final Logger log = LoggerFactory.getLogger(SampleTest.class); @Autowired private UserMapper userMapper; @Test public void testSelectUser() { log.info("=== testSelectUser ==="); List<User> userList = userMapper.selectList(null); Assert.assertEquals(5, userList.size()); userList.forEach(System.out::println); } }
报错:SpringBoot Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration
解决:这是因为单元测试是写在父模块下的,导致找不到主启动类,在父模块里是不能通过@SpringBootTest(classes = BootApplication.class) 的方式指定主启动类的,这样指定以后还是会报错。
最简单的办法是:把这个测试类转移到主启动类所在的子模块里,就可以了。
百度、谷歌了一番,遇到这个报错的不在少数,但是网上搜索到的资料里,大多是千遍一律的答案,更没有说明他们的项目结构是什么样的(其实他们的项目应该不是父子结构的),这就导致排查这个问题绕了弯路,现在记录下来,避免大家再次踩坑!
参考资料:
https://blog.csdn.net/cn45643/article/details/121664541
https://blog.csdn.net/csdn_am/article/details/79757097