簡體   English   中英

當我嘗試在單元測試中模擬偵探時,Spring Cloud失敗

[英]spring cloud is failing when I try to mock sleuth in unit tests

如果我使用Dalston.SR3或Dalston.Release版本嘗試在單元測試中模擬Tracer和Span等對象時遇到一些錯誤,但是如果我使用Camden.SR6或Camden.SR7版本則不會發生此問題。

在此處找到示例代碼

微服務msvc-a使用是Dalston版本,並且具有兩個測試類,其中只有使我試圖模擬Tracer和Span對象的類失敗。

微服務msvc-b使用的是Camden版本,並且具有相同的測試類。

同時,當我處於STS調試模式時,我無法理解這種情況,為什么我看不到任何錯誤跟蹤或類似信息……僅是NullpointerException。

在此處輸入圖片說明

 public class AbstractSpanAccessorTest { @MockBean private Tracer tracer; @MockBean private Span span; private Random random = new Random(); @Before public void mockSpan() { long id = createId(); Span spanMock = Span.builder().name("mock").traceId(id).spanId(id).build(); doReturn(spanMock.traceIdString()).when(span).traceIdString(); doReturn(span).when(tracer).getCurrentSpan(); doReturn(span).when(tracer).createSpan(anyString()); } private long createId() { return random.nextLong(); } } 

是我的錯 模擬跨度的正確方法是:

 @Before
 public void mockSpan() {
     long id = createId();
     span = Span.builder().name("mock").traceId(id).spanId(id).build();
     doReturn(span).when(tracer).getCurrentSpan();
     doReturn(span).when(tracer).createSpan(anyString());
 }

Tracer完全不會使用Finchley.SR2進行嘲笑,所以我最終得到了這一點:

Tracing tracing = Tracing.newBuilder().build();
Tracer tracer = tracing.tracer();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM