我将 Junit 与 Mockito 结合使用。我使用mockito的verify方法+junit assertion来做完整的验证。这是不可取的吗?我们应该使用其中之一,而不是同时使用两者吗?
最佳答案
两者并用没有错。
Mockito 的 verify
用于断言在给定的 mock 上调用了一个方法(使用预期的参数)。
JUnit 的assertXYZ
用于断言某些结果具有预期值。
两者都是有效的验证,如果两者相关,则两者都应该使用。
例如,考虑以下(不可否认是人为的)情况:
你有一个执行一些数学计算的接口(interface):
public interface ValueProducer {
public int getValue(int val);
}
还有一个将它产生的任何结果加倍的类:
public class Doubler {
public static int doubleThatResult (ValueProducer producer, int val) {
return 2 * producer.getValue(val);
}
}
测试它需要断言两件事:
- 正确调用了
getValue
- 结果翻倍
所以,例如:
public class DoublerTest {
@Test
public void testDoubleThatResult() throws Exception {
int value = 7; // Or any other value
int returnMock = 13; // Or any other value
ValueProducer producerMock = mock(ValueProducer.class);
when(producerMock.getValue(value)).thenReturn(returnMock);
int actual = Doubler.doubleThatResult(producerMock, value);
verify(producerMock);
assertEquals(26, actual);
}
}
关于java - 同时使用 junit 断言和 mockito 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906784/