如果我使用 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();
}
}