@AutoConfigureWebTestClient(timeout =“ 600000”)无效

时间:2019-06-27 05:10:58

标签: java spring-boot junit spring-boot-test

我正在使用WebTestClient对控制器进行一些集成测试。如果我在控制器内设置断点,则会达到WebTestClient 5s的标准超时时间。解决方案是按照她的Timeout on blocking read for 5000 MILLISECONDS in Spring WEBFLUX所说,将@AutoConfigureWebTestClient(timeout = "600000")添加到我的测试中。

对我来说@AutoConfigureWebTestClient(timeout = "600000")不会改变任何事情。 5秒后我仍然收到了timout异常。

有什么想法吗?

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@ActiveProfiles("test")
@Transactional
@Import(EntityFactoryConfiguration.class)
@AutoConfigureWebTestClient(timeout = "600000") // giv me 10 min for debugging
public class LogControllerIntegrationTest {

    ...

    @Autowired
    private WebTestClient webTestClient;

    ...

    @Test
    public void myTest() {
        ...
        webTestClient.post().uri("/log")
                .contentType(MediaType.APPLICATION_JSON_UTF8)
                .accept(MediaType.APPLICATION_JSON_UTF8)
                .body(BodyInserters.fromObject(protocolLine))
                .exchange()
                .expectStatus().isOk();

    }

3 个答案:

答案 0 :(得分:1)

我认为注释在您的设置中不起作用,因为默认情况下超时时间为already 5 seconds,那么如何尝试该链接问题的其他答案?

@BeforeEach
public void setUp() {
     webTestClient = webTestClient
                        .mutate()
                        .responseTimeout(Duration.ofMillis(600000))
                        .build();
}

您可以从其名称@AutoConfigureWebTestClient中看到它正在尝试自动配置WebTestClient,但是我认为您可以通过自动装配WebTestClient并进行配置来覆盖它吗?因此,请继续手动设置超时!

更新

Afaics,仅添加spring-boot-starter-webflux作为依赖项就足以获得WebTestClient bean,因此我认为甚至不需要@AutoConfigureWebTestClient。选中this。你可以确认吗?

答案 1 :(得分:1)

我知道问问题已经一年了。 但截至目前,此注释在给定的超时时间内效果很好 这是我的配置

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@AutoConfigureWebTestClient(timeout = "10000")
@ActiveProfiles("test")
public class SomeIntegrationTests {

    @Autowired
    private WebTestClient webClient;

也许是一个已解决的旧错误。

答案 2 :(得分:0)

@AutoConfigureWebTestClient不接受毫秒值,而是使用

解析为Duration的字符串
Duration.parse(CharSequence)

如Javadoc中针对@AutoConfigureWebTestClient

所述

客户端的超时时间(采用以下格式处理: Duration.parse(CharSequence))

持续时间字符串的格式在Duration Javadoc

中进行了说明。

要设置10分钟的超时时间,您应该指定以下内容:

@AutoConfigureWebTestClient(timeout = "PT10M")
相关问题