下面是我的测试代码:

@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?

最佳答案

EasyMock实现了CalculatorService,因为您已使用@Mock对其进行了注释,并在适当的EasyMock TestRunner(或Rule)中运行。但是,由于在声明时它仍处于记录模式,因此所有方法都是合法的,但是它们将返回一些垃圾默认值,例如0。

关于java - 为什么在使用EasyMock时抛出NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32432588/

10-11 00:19