Android - MockitoJUnitRunner - 光标getCount始终返回0

时间:2018-01-14 15:17:20

标签: android unit-testing mockito

我尝试在Mockito的单元测试中使用游标,但即使添加一行,getCount()方法也始终返回0。有人可以帮帮我吗?

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

1 个答案:

答案 0 :(得分:0)

"标准" Mockito模拟功能允许记录模拟对象的行为 你写的东西看起来像是一个Mockito间谍(你嘲笑被测对象的一部分),只能在遗留情境中使用(因为你没有选择)。

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

假设您有两个要测试的案例:

  • foo()返回true Cursor.getCount()返回0
  • 的情况
  • foo()返回falseCursor.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))
}