为什么在使用EasyMock时抛出NullPointerException

时间:2015-09-07 06:44:48

标签: java nullpointerexception easymock

以下是我的测试代码:

@TestSubject
MathApplication mathApplication = new MathApplication();

@Mock
CalculatorService calculatorService;

@Test
public void testAdd() {
    EasyMock.expect(calculatorService.add(10.0, 20.0)).andReturn(30.00);

    Assert.assertEquals(30.0, mathApplication.add(10.0, 20.0), 0);
}

CalculatorService 是一个接口,它定义了 add()方法,该方法将在MathApplication类的add()方法中调用。 如您所见, EasyMock.replay()未被调用,因此当我运行测试类时,结果显示为:

  

java.lang.AssertionError:预期:30.0实际:0.0

让我感到困惑的是,由于没有实现CalculatorService,为什么没有抛出NullPointerException?

1 个答案:

答案 0 :(得分:1)

EasyMock实现CalculatorService,因为您已使用@Mock注释它并且正在适当的EasyMock TestRunner(或规则)中运行。但是,由于它在断言时仍然处于记录模式,因此所有方法都是合法的,但它们会返回一些垃圾默认值,例如0。