最近在做一个Springboot与Mybatis整合实现用户登录的项目时,遇到了一些问题,苦恼了很久,最后发现是一个非常非常傻的问题,如果你也遇到过类似的情况,不妨来看看是否可以帮到你。
首先是问题描述:在使用测试类时,使用自动引入注解时报红线,提示无法自动引入,而测试时,没有结果也没有报错。
但是进程结束后退出代码为-1,说明是遇到了异常,但是没有显示出来。
我在网上查找了相关资料,了解到需要在@SpringBootTest注解后加
classes=SpringBootTest.class,然后我试了,结果是有了,可还是报错。
这里就不展示了,遇到此类问题的读者可以试试。
这是项目的主体结构
相信有人已经看出来了,由于我是在test中自己建的包以及测试类,没有用快捷键,所以测试类的路径和mapper层中的方法所在的路径不同,一开始我觉得这个并没有什么影响,后来直到我一字一字对应别人的代码也没发现任何不同后,排除一切不可能剩下的就是真相。。。所以我用快捷键在mapper层生成测试类,然后不出所料。
@SpringBootTest
class UserLoginMapperTest {
@Autowired
DataSource dataSource;
@Test
void test01() throws SQLException {
System.out.println(dataSource.getConnection());
}
注入无红线,测试成功有结果,获取到了连接。
总结:springboot中对测试所在的路径有严格要求,必须与被测试方法所在的路径完全相同。(r如有不对请指正)因此最好是在要被测试的类中直接通过快捷键生成测试,不要自己建测试类,很可能导致springboot无法识别导致装配失败的问题。