AndroidX Test - локальный модульный тест не удался из-за ExceptionInInitializerError

Я пишу модульный тест для нашего приложения с использованием библиотеки AndroidX Test и обнаружил сбой при запуске моего первого тестового примера.

Насколько мне известно, основной причиной этого сбоя является исключение NullPointerException, поскольку в onCreate класса приложения вызываются статические методы.

Я пробовал несколько способов: использовать getApplicationContext из ApplicationProvider, использовать InstrumentationRegistry.getInstrumentation.getContext() или getTargetContext() или даже использовать mock(Context::class.java), но безрезультатно.

Я спрашиваю, есть ли решение этой проблемы?

Ниже приведен код:

import androidx.test.core.app.ApplicationProvider.getApplicationContext
import androidx.test.ext.junit.runners.AndroidJUnit4
import 'I already hide this package due to company policy, sorry'.MyApplication
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)

class PathTest{

@Test
fun updateSDcardPath(){
    val context = getApplicationContext<MyApplication>()

    Path.updateSDcardPath(context)
    val sdCardUpdated: String = ....
    if(....){
        assertEquals(....)
        assertEquals(....)
        assertEquals(....)
    } else{
        assertEquals(....)
    }
}

}

Ниже приведены подробности отказа:

java.lang.ExceptionInInitializerError в "Я уже скрываю этот пакет из-за политики компании, извините".MyApplication.onCreate(MyApplication.java:33) в org.robolectric.android.internal.AndroidTestEnvironment.lambda$installAndCreateApplication$0 (AndroidTava:Environment. 276) по адресу org.robolectric.util.PerfStatsCollector.measure (PerfStatsCollector.java:75) по адресу org.robolectric.android.internal.AndroidTestEnvironment.installAndCreateApplication (AndroidTestEnvironment.java:276) по адресу org.roidTestEnvironment.java:276(AndroidTestEnvironment.java:169) на org.robolectric.RobolectricTestRunner.beforeTest(RobolectricTestRunner.java:301) на org.robolectric.internal.SandboxTestRunner$2.lambda$ оценивают $0(SandboxTestRunner.java:243) в org.internal. байт-код. песочница.lambda$runOnMainThread$0(Sandbox.java:89) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149).concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) в java.lang.Thread.run(Thread.java:748) Вызвано: java.lang.NullPointerException в 'Я уже скрываю этот пакет из-за политики компании, извините '.Feature.(Feature.java:29) ... еще 12Я уже скрываю этот пакет из-за политики компании, извините ''. Особенность. (Feature.java:29)... еще 12Я уже скрываю этот пакет из-за политики компании, извините ''. Особенность. (Feature.java:29)... еще 12

===================================================================

Спасибо! С уважением

0 ответов

Другие вопросы по тегам