我们在使用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:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121982.html