junit 测试因异常而失败

时间:2021-06-14 02:22:17

标签: junit

我使用 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)。请帮我解决。

1 个答案:

答案 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);
  }
相关问题