Spring中的aware接口详情
477
2022-09-30
解决Spring boot 整合Junit遇到的坑
目录这是我在使用springboot整合Junit的时候遇到的坑1.在pom.xml中添加junit环境的依赖2.在src/test/java下建立测试类3.自己编写的启动类SpringBoot 整合Junit测试注入Bean失败问题描述下面是我的测试类解决过程以下是我的启动类总结
这是我在使用springboot整合Junit的时候遇到的坑
1.在pom.xml中添加junit环境的依赖
2.在src/test/java下建立测试类
例:
@RunWith(vatxGAkKlue = SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={Demo.class}) // **注意:启动类为自己编写的(这是个坑)**
public class serviceTest {
@Autowired
private serviceImpl serviceimpl;
@Test
public void testAdd() {
this.serviceimpl.add();
}
}
3.自己编写的启动类
@SpringBootApplication
public class Dehttp://mo {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(Demo.class);
// 这个是关闭springboot启动时候的图标可以不设置
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
}
说明:
@RunWith:启动器 SpringJUnit4ClassRunner.class:让 junit 与 spring 环境进行整合
@SpringBootTest(classes={App.class})
1:当前类为 springBoot 的测试类
2:加载 SpringBoot 启动类(启动类为自己编写的启动类(这是个坑))。启动SpringBoot
SpringBoot 整合Junit测试注入Bean失败
java.lang.IllegalStateException: Failed to load ApplicationContext
问题描述
我是在springboot整合测试的时候报错的。运行就是报各种bean找不到。
版本:springboot-1.5.12 + junit4.12
这个问题卡了半天才解决。从网上搜了若干个博客都试了,基本上都没有用。
什么加@WebAppConfiguration这个注解啊,加那个注解的,全没用。
下面是我的测试类
11111
解决过程
我仔细观察了一下启动类,因为这个@SpringBootTest我是设置的启动类的。才发现原来注入的这些找不到的bean,实际上都是启动类当中使用依赖注入的对象。
以下是我的启动类
由此我推断,虽然springboot自带了扫描包(默认扫描规则就是启动类以上的子包),但是他可能是遵循java的由上而下执行代码规律,因为他毕竟是整合测试,他和直接从启动类启动项目是不一样的概念。在他要依赖注入这个对象的时候,而实际上这个对象并没有放到容器当中,这时候就会产生注入不成功。
最终在启动类添加了一个@ComponentScan(basePackages = {“com.xjgx”})扫描全包。成功解决!
在配置类上添加 @ComponentScan 注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 context:component-scan。
总结
springboot整合junit测试方法,实际上就这两个注解就可以了。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = EhrApplication.class)
public class EhrApplicationTest {
@Autowired
HealthExamReSerivice healthExamReSerivice;
@Test
public void contextLoads() {
}
}
假如启动类使用到了依赖注入对象,这个时候需要在启动类上添加扫描包。
@ComponentScan(basePackages = {"com.xjgx"})
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~