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

Spring Boot 3(Kotlin):TestRestTemplate读取超时设置无效如何解决

解决Spring Boot 3集成测试中TestRestTemplate超时设置无效的问题

1. 确保测试配置类被正确加载

你的IntegrationTestConfiguration配置类需要被集成测试类导入,否则Spring会使用默认的TestRestTemplate实例(默认读取超时为10秒),而非你自定义的Bean。在测试类上添加@Import注解:

@ExtendWith(SpringExtension::class)
@ActiveProfiles("test")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@Import(IntegrationTestConfiguration::class) // 新增此注解
class IntegrationIT {
    // ... 原有代码
}

2. 调整TestRestTemplate的超时配置方式

Spring Boot 3中,直接通过RestTemplateBuilder.setReadTimeout()可能无法正确传递配置到底层请求工厂。建议直接配置SimpleClientHttpRequestFactory的超时参数:

@TestConfiguration
class IntegrationTestConfiguration {
    @LocalServerPort
    private val port = 0

    @Bean
    fun testRestTemplate(): TestRestTemplate {
        // 配置请求工厂的超时参数
        val requestFactory = SimpleClientHttpRequestFactory().apply {
            readTimeout = 50 * 1000 // 读取超时50秒
            connectTimeout = 5 * 1000 // 连接超时5秒(可选,按需调整)
        }

        val restTemplate = RestTemplateBuilder()
            .rootUri("http://localhost:$port")
            .requestFactory { requestFactory } // 绑定自定义请求工厂
            .build()

        return TestRestTemplate(restTemplate)
    }
}

3. 备选方案:直接修改底层RestTemplate参数

如果上述方式仍不生效,可以直接操作TestRestTemplate的底层RestTemplate实例,手动设置超时:

@TestConfiguration
class IntegrationTestConfiguration {
    @LocalServerPort
    private val port = 0

    @Bean
    fun testRestTemplate(): TestRestTemplate {
        val testRestTemplate = TestRestTemplate()
        val restTemplate = testRestTemplate.restTemplate

        // 强制转换为默认请求工厂并设置超时
        val requestFactory = restTemplate.requestFactory as SimpleClientHttpRequestFactory
        requestFactory.readTimeout = 50 * 1000
        requestFactory.connectTimeout = 5 * 1000

        // 设置根URI
        restTemplate.rootUri = "http://localhost:$port"

        return testRestTemplate
    }
}

内容的提问来源于stack exchange,提问作者Irina S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:33:13