SpringBoot在使用测试的时候是否需要@RunWith?
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
我们在使用SpringBoot进行测试的时候一般是需要加两个注解
- @SpringBootTest
- 目的是加载ApplicationContext启动spring容器。
- @RunWith
- 是一个测试启动器可以加载SpringBoot测试注解
- 让测试在Spring容器环境下执行。如测试类中无此注解将导致service,dao等自动注入失败
但是我们有时候在使用的时候会发现不需要@RunWith注解也可以运行测试类。在网上查了很多资料有很多人说是IDEA编译器的原因暂且不说他们说的是否正确我发现的原因与他们并不一样。
我发现根本原因是@Test的导包问题
我们在使用@Test实际上有两个导包选择
如果我们使用的是org.junit.jupiter.api
包下的Test注解那么我们是不需要@RunWith注解的。
而如果我们使用的是org.junit
包下的Test注解那么就需要@RunWith注解如果我们不使用的话会出现空指针的情况
这个启动器使用SpringJUnit4ClassRunner或者SpringRunner都可以。
实际上SpringRunner继承了SpringJUnit4ClassRunner