Вопрос:

В чем разница между androidx.collection.ArrayMap и android.util.ArrayMap?

android kotlin androidx

25 просмотра

1 ответ

2066 Репутация автора

Я уже посмотрел исходный код, единственное, что мне любопытно узнать, почему существуют обе версии, нужно было бы осудить, нет?

Сегодня я писал модульные тесты для одного из моих классов viewModel в классе репозитория, который я использовал android.util.ArrayMap. Я инициализировал ArrayMap с поддельным значением, но во время отладки обнаружил, что размер arrayMap всегда равен нулю.

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

Но когда я изменяю его, androidx.collection.ArrayMapон работает нормально. Но проблема в том, что я уже использовал android.util.ArrayMapв своем хранилище и классе viewModel, и в данный момент я не хочу преобразовывать это в 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
    }

}

Может кто-нибудь объяснить, почему android.util.ArrayMapразмер всегда равен нулю, даже если я добавлю в него какой-то элемент.

Автор: Krishna Sharma Источник Размещён: 11.08.2019 06:06

Ответы (1)


0 плюса

1316 Репутация автора

Вы не можете использовать классы платформы Android в своих локальных тестах. В вашем локальном тесте вы только что издевались над android.util.ArrayMapклассом. Вот почему его размер всегда равен 0. Вы должны использовать инструментальные тесты или использоватьandroidx.collection.ArrayMap

Автор: Andrei Tanana Размещён: 11.08.2019 07:57
Вопросы из категории :
32x32