返回

Mockito 中文文档 ( 2.0.26 beta )

后端

Mockito 2.0.26 beta 版本已正式发布。欢迎前来了解最新功能和变更。

本中文文档将为您详细介绍 Mockito 的用法和最佳实践,帮助您在测试中轻松使用 Mockito。


目录

  • 迁移到 Mockito 2.0
  • 验证某些行为
  • 如何做一些测试桩 (Stub)
  • 参数匹配器 (matchers)
  • 验证函数的确切、最少、从未

迁移到 Mockito 2.0

如果您从较早版本的 Mockito 迁移,请注意以下变更:

  • 对参数匹配器进行了重构,现在更加灵活和易用。
  • 引入了新的验证方法,使您可以更轻松地验证方法调用的确切、最少或从未发生。

验证某些行为

使用 Mockito 验证方法调用的最简单方法是使用 verify() 方法。例如:

@Test
public void should_do_something() {
    // 创建一个 mock 对象
    MyClass mock = Mockito.mock(MyClass.class);
    
    // 使用 mock 对象调用方法
    mock.doSomething();
    
    // 验证方法是否被调用
    Mockito.verify(mock).doSomething();
}

如何做一些测试桩 (Stub)

有时候,您需要创建一个测试桩,而不是一个 mock 对象。测试桩可以用来模拟真实对象的特定行为。使用 Mockito 创建测试桩的方法如下:

@Test
public void should_do_something() {
    // 创建一个测试桩
    MyClass stub = Mockito.stub(MyClass.class);
    
    // 设置测试桩的行为
    Mockito.when(stub.doSomething()).thenReturn("something");
    
    // 使用测试桩调用方法
    String result = stub.doSomething();
    
    // 验证方法是否被调用
    Mockito.verify(stub).doSomething();
    
    // 断言结果
    assertEquals("something", result);
}

参数匹配器 (matchers)

Mockito 提供了各种参数匹配器,可以用来匹配方法调用的参数。例如:

  • any() 匹配任何参数
  • eq() 匹配指定的值
  • argThat() 匹配满足特定条件的参数

验证函数的确切、最少、从未

Mockito 提供了以下方法来验证函数调用的次数:

  • times() 验证函数被调用了指定次数
  • atLeast() 验证函数被调用了至少指定次数
  • atMost() 验证函数被调用了至多指定次数
  • never() 验证函数从未被调用

例如:

@Test
public void should_do_something() {
    // 创建一个 mock 对象
    MyClass mock = Mockito.mock(MyClass.class);
    
    // 验证方法被调用了三次
    Mockito.verify(mock, times(3)).doSomething();
}