Android - MockitoJUnitRunner语言 - Cursor getCount 始终返回 0



>我正在尝试在与 Mockito 的单元测试中使用光标,但即使我添加一行,getCount(( 方法也总是返回 0。有人可以帮助我吗?

final Cursor cursor = new MatrixCursor(new String[]{"ID", "name", "data"});
((MatrixCursor) cursor).addRow(new Object[]{1, "myName", "myData"});

"标准"Mockito模拟功能允许记录模拟对象的行为。
你写的东西看起来像一个Mockito间谍(你模拟了被测对象的一部分(,应该只在遗留上下文中使用(因为你别无选择(。

在您的情况下,假设您为依赖于 Cursor 对象的 MyClassToTest类的boolean foo()方法编写单元测试,并且您希望模拟getCount()调用以测试可能的用例。

假设您有两种情况要测试:

  • foo()返回 true 的情况Cursor.getCount()返回 0
  • foo()返回false的情况Cursor.getCount()返回 1 个或更多。

你可以写一些东西:

@Mock
Cursor cursor;
@Test
public void add_return_true_if_no_element(){
      Mock.when(cursor.getCount()).thenReturn(0);
      Assert.assertTrue(new MyClassToTest().foo(cursor))
}
@Test
public void add_return_false_if_at_least_one_element(){
      Mock.when(cursor.getCount()).thenReturn(1);
      Assert.assertFalse(new MyClassToTest().foo(cursor))
}

最新更新