androidx.collection.ArrayMap和android.util.ArrayMap有什么区别?

时间:2019-08-11 06:06:26

标签: android kotlin androidx

我已经看过源代码了,我唯一想知道为什么两个版本都存在的唯一原因是不赞成使用?

今天,我正在使用parent.frame[x] 在存储库类中为其中一个viewModel类编写单元测试。我确实用假值初始化了ArrayMap,但是在调试时发现arrayMap的大小始终为零。

android.util.ArrayMap

但是当我将其更改为 arrayMap["key1"] = someValue arrayMap["key2"] = someValue arrayMap["key3"] = someValue 时,它可以正常工作。但是问题是我已经在存储库和viewModel类中使用了androidx.collection.ArrayMap,现在我不想将其转换为android.util.ArrayMap

这是测试班。

androidx.collection.ArrayMap

有人可以解释一下为什么import android.util.ArrayMap //import androidx.collection.ArrayMap // switching to this works fine import org.junit.* import org.junit.Assert.assertNotNull import org.junit.runners.MethodSorters @FixMethodOrder(MethodSorters.NAME_ASCENDING) class AudioViewModelTest { private lateinit var audioMap: ArrayMap<Int, AudioItem> @Before fun setUp() { audioMap = ArrayMap() val audioItem = AudioItem() audioMap[1] = audioItem audioMap[2] = audioItem audioMap[3] = audioItem assertNotNull(audioMap[1])// this is failing } @Test fun testAudioMap() { assertNotNull(audioMap[1])// this is failing } } 总是具有零的大小,即使我在其中添加了一些元素。

1 个答案:

答案 0 :(得分:0)

您不能在本地测试中使用Android平台类。在本地测试中,您只是模拟了android.util.ArrayMap类。这就是为什么它的大小始终为0的原因。您必须使用检测测试或使用androidx.collection.ArrayMap