我使用 junit 来测试我的 Metrics 类。当测试运行时,我没有得到任何异常,但测试没有成功。我试图找到所有不同的问题,但没有找到任何问题。这是它的代码。
public class MetricsTest {
private MetricsHelper metricHelper;
private MeterRegistry registry;
private Timer timer;
@Before
public void setup(){
registry = spy(mock(MeterRegistry.class));
when(registry.timer(any(), any(Tags.class))).thenReturn(timer);
metricHelper = new MetricHelper(registry);
}
@Test
public void testSubmitSuccessWithoutContext() throws Exception {
metricHelper.submitTimer(metric, 1L, TimeUnit.SECONDS);
verify(registry, times(1)).timer(
KEY_PREFIX_TIMER_METRIC + metric.toLowerCase());
}
}
我收到异常 java.lang.NullPointerException at com.company.metrics.MetricsHelper.submitTimer(MetricsHelper.java:39)
。请帮我解决。
答案 0 :(得分:0)
在我看来,您没有初始化可能导致此 NPE 的 Timer 对象。请尝试初始化如下:
private MetricsHelper metricHelper;
private MeterRegistry registry;
private Timer timer;
@Before
public void setup(){
registry = spy(mock(MeterRegistry.class));
timer = mock(Timer.class);
when(registry.timer(any(), any(Tags.class))).thenReturn(timer);
metricHelper = new MetricHelper(registry);
}