Mockito和JUnit问题

时间:2015-06-26 10:42:16

标签: junit mockito

我有这个测试:

%

以及@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>

但我不知道为什么。似乎模拟不会返回我想要的东西。

我做错了什么?

感谢。

1 个答案:

答案 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());
}