Mockito 详解:第三部分:结果验证
零:准备代码
public class Foo {
private Bar bar;
private Tou tou;
public int sum(int a, int b) {
return bar.add(a, b);
}
public int count() {
bar.badCode();
return 5;
}
}
public class Bar {
public int add(int a, int b) {
return a + b;
}
public void badCode() {
throw new RuntimeException("bad bar code");
}
}
public class Tou {
public void tou() {
throw new RuntimeException("tou");
}
}
一:方法是否被调用/方法的调用的次数
atLeast(int minNumberOfInvocations)
允许至少 x 次调用的验证。atLeastOnce()
允许至少一次调用的验证。atMost(int maxNumberOfInvocations)
允许最多 x 次调用的验证。atMostOnce()
允许最多一次调用的验证。never()
times(0)
的别名,见times(int)
。only()
允许检查给定的方法是否只调用一次。times(int wantedNumberOfInvocations)
允许验证调用的确切次数。verify(T mock)
验证某些行为发生过一次。verify(T mock, VerificationMode mode)
验证某些行为至少发生过一次/确切的次数/从未发生过。verifyNoInteractions(Object... mocks)
验证给定的mock对象上没有发生交互。verifyNoMoreInteractions(Object... mocks)
检查任何给定的mock对象上是否有任何未经验证的交互。validateMockitoUsage()
验证测试代码中是否有书写错误的地方。
示例:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {
//foo 对象内部的成员变量会自动被 @Mock 注解的生成的对象注入。
@InjectMocks
private Foo foo;
//bar 对象会自动的注入到 @InjectMocks 注解的对象的成员变量中去。
@Mock(lenient = true)
private Bar bar;
//tou 对象会自动的注入到 @InjectMocks 注解的对象的成员变量中去。
@Mock(lenient = true)
private Tou tou;
@Test
public void doReturnTest() {