UnitTest-被测方法总是返回空图

时间:2019-05-17 13:46:31

标签: java android unit-testing kotlin

我正在为简单方法编写单元测试,应该返回包含项目的地图, 但每次地图都会返回0个项目。

测试在科特林

@Test
fun `convertToMap`() {
  val items = listOf(Item(ID, false))
  val map = viewModel.convertToMap(items)
  assertThat(map[ID]).isFalse()
}

此测试失败,因为地图中没有项目。

代码使用Java

public Map<String, Boolean> convertToMap(List<Item> items) {
  Map<String, Boolean> itemsMap = new ArrayMap<>();
  for (Item item: items) {
    itemsMap.put(item.getId(), item.isEnabled());
  }
  return itemsMap;
} 

List<Item> items包含item,不是nullgetId()返回值,与isEnabled()一样,

我已经调试了每个放置不增加地图大小的方法。 (项目未添加到地图)

为测试添加了依赖性:

testImplementation 'junit:junit:4.12'
testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation "org.mockito:mockito-core:${mockito_core}"
testImplementation "org.mockito:mockito-inline:${mockito_kotlin_inline}"
testImplementation "org.robolectric:robolectric:${robolectric}"
testImplementation "com.google.truth:truth:${google_truth}"
testImplementation "org.jetbrains.kotlin:kotlin-test-junit:${kotlin_version}"

编辑:明确地说,convertToMap()在标准环境中运行时有效。

1 个答案:

答案 0 :(得分:0)

更改

import android.util.ArrayMap; 

至:

android.support.v4.util.ArrayMap;

解决了该问题。