SpringBoot项目Cannot resolve symbol 'SpringBootTest'问题解决

  1. 背景
    有个比较新的项目目前还没有单测(事实证明是单测没起来,大家手头事情都很多,都没时间去解决它)
  2. 经过
    我先写了一个TestApplication
    SpringBoot项目Cannot resolve symbol 'SpringBootTest'问题解决
    没有任何问题,OK,接着搞,尝试写一个demo单测
    SpringBoot项目Cannot resolve symbol 'SpringBootTest'问题解决
    一片飘红,鼠标悬停可以看到:SpringBoot项目Cannot resolve symbol 'SpringBootTest'问题解决
  3. 解决方法
    网上查询发现可以通过注释scope标签来解决
    SpringBoot项目Cannot resolve symbol 'SpringBootTest'问题解决
  4. 原因以及结论
    为什么这样可以解决呢?一开始我以为因为junit的版本太低;因为看到有文章说junit最好使用4.5以上的版本,否则有可能报错,或者报cannot resolve symbol runwith。
    所以我采取了下图方式来解决。
    SpringBoot项目Cannot resolve symbol 'SpringBootTest'问题解决
    但并没有解决我的问题。。。。
    最后发现:测试类一般是放在src/test/java,而不是放在src/main/java下.maven在编译的时候,src/main/java下是不引用scope=test的jar,而编译src/test/java下的测试这会引用scope=test的jar,原因可能就是当使用Junit提供的一个注解把原有的main方法替换了,替换成spring提供的 @Runwith的后,scope=???这个时候里面的值就不用test了,test是在测试的时候才起作用,不测试的是不起作用的,要是有的话,这个时候就会找不到SpringJUnitClassRunner.class
    然后回头看单测正是放在src/main/java下,最后的最后,我将单测的位置换了一下,换到src/main/java
    SpringBoot项目Cannot resolve symbol 'SpringBootTest'问题解决
    完美
    参考:https://my.oschina.net/u/4115727/blog/3051055