SpringBoot 2.6.8中无法覆盖spring.test.context.cache.maxSize配置的问题
解决SpringBoot 2.x无法修改spring.test.context.cache.maxSize的问题
问题根源
spring.test.context.cache.maxSize 是Spring Test框架层面的配置,在Spring应用上下文初始化之前就已加载生效。你之前尝试的application-test.yml属于应用上下文内部配置,无法影响这个早于上下文启动的缓存参数;而直接在gradlew命令后加-D参数,实际是传递给Gradle进程而非测试用的JVM进程,所以测试进程读取不到该配置。
正确解决方案
方案1:通过Gradle命令传递参数给测试JVM
需要将系统属性通过org.gradle.jvmargs传递给测试进程:
./gradlew clean test --info -Dorg.gradle.jvmargs="-Dspring.test.context.cache.maxSize=64"
方案2:在build.gradle中配置测试任务
直接在构建脚本里为test任务指定系统属性,一劳永逸:
test { // 配置Spring Test上下文缓存最大容量 systemProperty "spring.test.context.cache.maxSize", "64" // 可选:开启DEBUG日志验证配置是否生效 testLogging.showStandardStreams = true }
方案3:通过测试类注解指定(单类生效)
如果只想针对特定测试类生效,可以使用@TestPropertySource指定属性:
import org.springframework.test.context.TestPropertySource; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest @TestPropertySource(properties = "spring.test.context.cache.maxSize=64") public class YourTestClass { // 测试代码 }
验证配置生效
运行测试后,查看DEBUG日志中的Spring test ApplicationContext cache statistics条目,确认maxSize已更新为设置的值。
内容的提问来源于stack exchange,提问作者Nic Mai
相关产品推荐
相关产品推荐

