如果pom.xml中没有这段,则@RunWith(SpringRunner.class)不会报错。如果有这段:①未注释test会报错;②注释test不会报错
junit
junit
4.12
test
如果pom.xml中没有这段,则会报错。如果有这段:①未注释testSpringRunner、SpringBootTest无法引用,会报错;②注释test不会报错
org.springframework.boot
spring-boot-starter-test
1.5.9.RELEASE
test
总结起来,想要使用
@RunWith(SpringRunner.class)
@SpringBootTest(classes= App.class)
pom.xml中应该引用这两个
org.springframework.boot
spring-boot-starter-test
1.5.9.RELEASE
junit
junit
4.12
方法2:
如果有test@RunWith报红,没有test会引入该类
junit
junit
4.12
test
如果有test@SpringBootTest报红,没有test会引入该类
org.springframework.boot
spring-boot-test
1.5.9.RELEASE
test
如果是4.2.4.RELEASESpringRunner报红,如果4.2.4.RELEASE会引入该类
org.springframework
spring-test
4.2.4.RELEASE
所以最后要正确使用,需引入这些架包
org.springframework
spring-test
4.3.7.RELEASE
org.springframework.boot
spring-boot-test
1.5.9.RELEASE
junit
junit
4.12
2.在IDE中新增JunitTest类
@RunWith(SpringRunner.class) //14.版本之前用的是SpringJUnit4ClassRunner.class
@SpringBootTest(classes = Application.class) //1.4版本之前用的是//@SpringApplicationConfiguration(classes = Application.class)
public classSystemInfoServiceImplTest {
@AutowiredprivateISystemInfoService systemInfoservice;
@Testpublic void add() throwsException {
}
@Testpublic void findAll() throwsException {
}
}
主要是注解的更改,如果注解用的不对,会报各种奇怪的问题,例如applicationContext找不到,datasource实例化失败等等。
为了支持上面两个注解,maven文件中要用对依赖以及版本,我当时添加SpringRunner.class所在的依赖jar时,由于用了idea的auto-imported,IDE自动导入了版本是3.x的,实际应该导入4.x,我一直以为idea导入的是正确的,导致在这上面费时颇多,后来我手工写入就解决了。下面是正确的spring boot test的maven依赖