Android-单元测试模拟功能

时间:2020-04-03 10:49:59

标签: android unit-testing

在我的视图模型中,我有以下列表

private val screenComponents = mutableListOf(
    ScreenComponent1(),
    ScreenComponent2()
)

fun getScreenComponents() = screenComponents

fun getScreenComponentsSize() = getScreenComponents().size

有时会在screenComponents列表中插入更多数据。

我正在尝试为此编写单元测试以确保大小正确,我知道我应该模拟getScreenComponents()函数,但是当我尝试测试getScreenComponentsSize()时我总是得到零

@RunWith(MockitoJUnitRunner::class)
class MyViewModelTest {

  private val viewModel: MyViewModel = Mockito.mock(MyViewModel::class.java)

  @Test
  fun screenComponentsTest() {

    when(viewModel.getScreenComponents()).thenReturn(
      mutableListOf(
        ScreenComponent1(),
        ScreenComponent2()
      )
    )

    Truth.assertThat(viewModel.getScreenComponentsSize()).isEqualTo(2) //Expected :2, Actual :0

  }
}

我不确定我缺少什么,因为getScreenComponentsSize()现在正在使用一个被模拟的函数,我将理解结果应该是我所模拟的结果。或者,我将如何成功进行测试?

0 个答案:

没有答案