spring boot单元测试spring context重复加载问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot单元测试spring context重复加载问题相关的知识,希望对你有一定的参考价值。

参考技术A 在使用spring boot框架进行单元测试时,笔者遇到一个问题,每次执行单元测试类时都会重复加载spring上下文,而加载过程通常都非常耗时,这大大增加了整个单元测试的执行时间,加载过程类似下面的日志:

在查阅了相关资料后,发现是spring在执行单元测试时,会将spring相关配置作为一个唯一的key,将对应上下文放在缓存当中,也就是说,如果每个单元测试类的加载的配置相同,就只会加载一次上下文,而后的执行过程中会从缓存中提取上下文,那么,为什么我的单元测试会每次加载?原因是,我的单元测试继承了同一个基类,而这个基类使用了powermock,在spring的测试策略中,如果有mock存在,单元测试类每次都会重新加载上下文,可以参考[ https://github.com/spring-projects/spring-boot/issues/7174] 。

那么,如何解决呢?方法也很简单,在基类中去除powermock,在特定需要使用powermock的类中覆写配置,笔者原先的spring测试基类是这样的:

修改后变成这样:

然后,在需要使用powermock模拟静态方法的类中做如下配置:

这样,就可以使得不需要powermock的类使用缓存中的上下文,从而减少整个单元测试的执行时间。

以上是关于spring boot单元测试spring context重复加载问题的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot中编写单元测试

Spring Boot:禁用 Spring Boot 单元测试的安全性 [重复]

Spring Boot 单元测试示例

spring boot单元测试spring context重复加载问题

Spring Boot 单元测试

Spring Boot 项目在 IDEA 中 进行单元测试