当前位置: 首页 > 知识库问答 >
问题:

@自动配置WebTestClient(timeout="600000")没有效果

柳墨一
2023-03-14

我正在使用WebTestClient对控制器进行一些集成测试。如果我在控制器内设置了一个断点,我达到了WebTestClient的标准超时5s。解决方法是将AutoConfigureWebTestClient(timeout=“600000”)添加到我的测试中,正如她在Spring WEBFLUX中阻塞读取5000毫秒的超时所述。

对我来说,AutoConfigureWebTestClient(timeout=“600000”)不会改变任何事情。5秒后,我仍然收到超时异常。

你知道怎么了吗?

@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个答案

黎同
2023-03-14

@AutoConfigureWebTestClient不接受毫秒值,而是使用解析为持续时间的字符串

Duration.parse(CharSequence)

如Javadoc中所述@AutoConfigreWebTestClient

客户端的超时持续时间(以duration.parse(CharSequence)处理的任何格式)。

duration Javadoc中解释了duration字符串的格式

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

@AutoConfigureWebTestClient(timeout = "PT10M")

司空和悌
2023-03-14

我知道这个问题已经有一年了。但是到目前为止,这个注释在给定的超时情况下运行良好。这是我的配置

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

    @Autowired
    private WebTestClient webClient;

也许是一个已经解决的老问题。。

颛孙晗昱
2023-03-14

我认为注释在您的设置中不起作用,因为默认情况下超时已经是5秒,尝试该链接问题的另一个答案如何?

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

从其名称可以看出,AutoConfigureWebTestClient试图自动配置WebTestClient,但我认为您可以通过自动连接WebTestClient来覆盖它,也许还可以配置它?因此,继续手动设置超时!

更新

Afaics,只需添加spring boot starter webflux作为依赖项,就足以获得一个WebTestClient bean,所以我认为甚至不需要有AutoConfigureWebTestClient。检查这个。你能确认一下吗?

 类似资料:
  • 我们正在使用Spring框架5和Spring Boot 2.0.0。M6,我们也在使用WebClient进行反应式编程。我们为我们的反应式Restendpoint创建了测试方法,所以我查找了一些关于如何做到这一点的例子。我发现这个或这个以及许多其他的都一样。他们只是自动绑定一个WebTestClient。所以我尝试了同样的方法: 我无法运行此操作,因为我收到错误信息: 因此,似乎不存在自动配置。我

  • Spring Boot中是否有任何属性可用于配置@Autowired WebTestClient?例如,如何在WebTestClient上设置servlet上下文路径(或者只是一些基本路径)? 下面是我的web测试现在的配置方式: 换句话说,Spring Boot相当于什么 我在文档中没有发现任何有用的东西:https://docs.spring.io/spring-boot/docs/curre

  • 我在斯波克写过集成测试。已将Spring Boot上下文配置为随机端口。Documantation声称sprig应该为我注入正确配置的实例,但是当我试图通过这些“自动配置的实例”进行调用时,我有下面给出的错误: 下面是我的代码:BaseIntegrationTest 使用WebTestClient类:

  • 问题内容: 我正在看工作区中的一些旧示例。由于没有 @Autowired, 我看不到自动 装配的方式 。Spring Boot + Facebook默认配置。 它工作完美,但是这些bean如何在没有@Autowired的情况下自动进行自动连线? 它们是作为字段或在构造函数中自动接线的吗? 问题答案: 借助Spring Boot 1.4+,构造函数将自动进行自动接线 https://docs.spr

  • 带有/login的URL模式应通过LoginFilter,在那里验证用户id和密码-工作正常 下面是我的安全配置代码。请帮助我在这个代码中缺少什么。如何配置过滤器,使JWT身份验证发生在URL模式 /login和 /register Spring security core:4.2.3,Spring boot:1.5.4

  • 16. 自动配置 Spring Boot的自动配置机制尝试根据所添加的jar依赖来自动配置您的Spring程序。例如,如果HSQLDB在您的类路径上,而且您尚未手动配置任何数据库连接bean,那么我们会自动配置一个内存数据库。 您需要通过将@EnableAutoConfiguration或@SpringBootApplication注解添加到一个@Configuration类来激活自动配置。 应当