You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:01:27