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

标签 android kotlin androidx

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

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

 arrayMap["key1"] = someValue
 arrayMap["key2"] = someValue
 arrayMap["key3"] = someValue

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

这是测试类(class)。
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
    }

}

有人可以解释为什么android.util.ArrayMap总是将大小设为零,即使我在其中添加了一些元素也是如此。

最佳答案

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

关于android - androidx.collection.ArrayMap和android.util.ArrayMap有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447712/

相关文章:

android - 如何判断 android Activity 当前是否显示为对话框?

android - 如何在 Kotlin 中将 ArrayList 转换为 JSONArray()

android - 在 Android P 上创 build 置 Activity

android - 无法同步Gradle项目/无法使用哈希字符串找到目标

java - 电池电量百分比的计量单位

Android onItemSelected 空指针异常

android - 如何从适配器获取变量值到android kotlin recyclerview中的 Activity ?

oop - 学习 Kotlin 中构造函数的语法

java - Android Studio中的Appcompat Activity 以及androidx gradle版本问题

java - AndroidX 抽屉导航