小编Ben*_*tte的帖子

如何使用 WebTestClient + Micrometer Tracer 测试 TraceId 传播?

迁移到 Spring Boot 3 并从 Sleuth 重构为 Micrometer 后,我无法再使用 WebTestClient + Tracer 测试 TraceId 传播。

我在这里的测试是有一个简单的 @RestController ,我希望通过 Tracer 传播 traceId :

@RestController
class MyTraceIdController(@Autowired private val tracer: Tracer) {


    @GetMapping("/trace")
    fun info(): ResponseEntity<String> {

        val traceKey = "x-b3-traceid"

        // Using tracer the traceId is retrieved at runtime but not during test
        val responseHeaders = HttpHeaders()
        responseHeaders.set(traceKey, tracer.currentSpan()?.context()?.traceId().toString())

        return ResponseEntity
            .ok()
            .headers(responseHeaders)
            .body("OK")
    }

}
Run Code Online (Sandbox Code Playgroud)

我们的目标是通过 WebTestClient 来测试它:

@AutoConfigureWebTestClient
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class MyTraceIdTests(@Autowired private val webTestClient: WebTestClient) {

    @Test …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot spring-boot-actuator micrometer-tracing

5
推荐指数
1
解决办法
3609
查看次数