1.问题描述
在使用SpringBoot2来进行单元测试时,发现不需要加@runWith注解,其次当测试类路径与boot启动类不是相同包或其子包时,必须指定启动类的 .class。
2.问题解决
1----:
首先针对这个问题,我们所使用的是springboot 2、值得注意的是这个版本对于junit做了较大的改动,移除了对junit3和4的支持,使用jupiter测试引擎替换了原来的junit4作为核心模块提供测试服务,这也是为什么昨天测试中最开始自动引入的是org.junit.jupiter的原因。
2----:
添加依赖spring_boot_starter_test后,可以在内部看到自带了jupiter测试核心模块,这是pom里最开始没有看到老版本junit4依赖的原因。
3----:
junit4,也就是老版本在使用测试时,就需要像昨天后边一段一样,手动添加依赖支持,不过使用junit4需要使用@springbootTest和@runWith注解,其中runWith指向使用spring的测试模块。
junit5(jupiter测试引擎)不再支持junit4(vintage测试引擎),在使用时自然不再需要spring来提供了,即不需要再使用@runWith注解。
4----:
最后一个小问题就是,@springbootTest属性的问题。分两种情况:
1)测试类所在目录跟boot启动类目录相同或者是子目录的情况下,在测试时可以自动找到启动类。即注解中不需要指定启动类的字节码。
2)不是相同目录或者子目录时,就需要指定启动类的字节码了.,@springbootTest(clases=✘✘✘.class)