【问题标题】:How to write unit test for sleuth?如何为侦探编写单元测试?
【发布时间】:2021-06-24 21:34:31
【问题描述】:

我在我的 springboot 应用程序中使用了 sleuth。现在我想编写单元测试以确保为请求生成 traceId。对此的任何建议或代码参考将不胜感激。谢谢。

【问题讨论】:

    标签: spring-boot junit5 spring-cloud-sleuth


    【解决方案1】:

    您可以创建一个返回 traceId 的控制器方法。要获取 traceId,请注入 Tracer 并从当前 span 的上下文中获取 traceId。

    @WebMvcTest 不会为此包含必要的自动配置,所以我猜你实际上必须启动服务器、发送请求并检查结果。

    【讨论】:

      【解决方案2】:

      这取决于。 :)

      如果您的组件使用Tracer 创建跨度,您可以只注入一个模拟(例如:使用 Mockito)并在模拟上进行验证。

      如果你想测试 Sleuth 的仪器,你至少需要启动上下文,这样它就不再是严格的单元测试了,你可以在 Sleuth 测试中看到 ApplicationContextRunner 的用法。

      您还可以检查日志,在响应中返回跟踪数据或设置 wiremock(而不是 Zipkin)并测试 Sleuth 是否将跨度发送给它。

      此外,如果您使用的是最新的快照(或稍等片刻,直到它发布):我们现在有一个新的执行器端点,它以 Zipkin 格式返回最新的跨度:https://github.com/spring-cloud/spring-cloud-sleuth/pull/1964

      【讨论】:

        猜你喜欢
        • 2018-01-17
        • 2012-01-06
        • 2019-03-17
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多