我有这个测试:
%
以及@Test
public void shouldReturn2Hours() {
Float expectedHours = 2f;
WorkChronometer workChronometer = Mockito.mock(WorkChronometer.class);
Mockito.when(workChronometer.getAccumulatedMinutes()).thenReturn(120);
Assert.assertEquals(expectedHours, workChronometer.getAccumulatedHours());
}
的实施:
WorkChronometer
当我执行测试时,它失败了:
junit.framework.AssertionFailedError:expected:< 2.0>但是:< 0.0>
但我不知道为什么。似乎模拟不会返回我想要的东西。
我做错了什么?
感谢。
答案 0 :(得分:2)
你在嘲笑被测试的课程。这样做可以通过什么都不做的方法来关联所有方法,并返回默认值。
如果你想这样做,你需要一个间谍或部分模拟。
与间谍:
@Test
public void shouldReturn2Hours() {
Float expectedHours = 2f;
WorkChronometer workChronometer = new WorkChronometer();
WorkChronometer spy = Mockito.spy(workChronometer);
doReturn(120).when(spy).getAccumulatedMinutes();
Assert.assertEquals(expectedHours, spy.getAccumulatedHours());
}
部分模拟:
@Test
public void shouldReturn2Hours() {
Float expectedHours = 2f;
WorkChronometer workChronometer = Mockito.mock(WorkChronometer.class);
Mockito.when(workChronometer.getAccumulatedHours()).thenCallRealMethod();
Mockito.when(workChronometer.getAccumulatedMinutes()).thenReturn(120);
Assert.assertEquals(expectedHours, workChronometer.getAccumulatedHours());
}