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

 

posted @ 2022-04-25 20:56  jamstack  阅读(1111)  评论(0编辑  收藏  举报