1
如果我使用Dalston.SR3或Dalston.Release版本嘗試在單元測試中模擬對象(如Tracer和Span),則會面臨一些錯誤,但此問題不會如果我使用Camden.SR6或Camden.SR7版本,則不會發生。當我嘗試在單元測試中模擬偵查時,彈簧雲失敗
找到一個示例代碼here
的microService MSVC-A使用達爾斯頓版本,有兩個測試類,其中只有失敗在那裏我試圖嘲弄示蹤和跨度對象的類。
微服務msvc-b正在使用卡姆登版本並具有相同的測試類。
同時,當我處於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();
}
}
你可以提供一個堆棧跟蹤或某事?目前,您在屏幕截圖中顯示的情況是,由於響應不能爲空,因此不能拋出NPE。此外,這是什麼意思,你試圖模仿Sleuth?請顯示您的測試並顯示哪一行導致NPE被拋出。 –
嗨,你有一個上面的示例代碼鏈接(https://github.com/fjmpaez911/spring-cloud-sleuth-error)。 沒有可用的跟蹤,但您可以嘗試運行這兩個微服務的單元測試,看看發生了什麼。 在真實場景中,我需要模擬Tracer和Span,因爲我不想在單元測試中執行類似這樣的代碼時發生錯誤(String traceIdString = spanAccessor.getCurrentSpan()。traceIdString();) –
你好,我明白我擁有它,但你甚至沒有寫如何運行或測試它。你沒有指向任何課程等請提供我所要求的細節。否則我將無法爲您提供幫助:/ –