AndroidX Test - локальный модульный тест не пройден из-за ExceptionInInitializerError - PullRequest
0 голосов
/ 16 января 2020

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

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

Я пробовал несколько способов: использовать 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 at «Я уже скрываю этот пакет из-за политики компании, извините». MyApplication.onCreate (MyApplication. java: 33) в org.robolectri c. android .internal.AndroidTestEnvironment.lambda $ installAndCreateApplication $ 0 (AndroidTestEnviro nment. java: 276) в org.robolectri c .util.PerfStatsCollector.measure (PerfStatsCollector. java: 75) в org.robolectri c. android .internal.AndroidTestEnvironment.installAnd Environment создания для приложения (приложение Android). java: 276) в org.robolectri c. android .internal.AndroidTestEnvironment.setUpApplicationState (AndroidTestEnvironment. java: 169) в org.robolectri c .RobolectricTestRunner.beforeTest (RobolectricTT37): Robolect. 301) в org.robolectri c .internal.SandboxTestRunner $ 2.lambda $ оценивают $ 0 (SandboxTestRunner. java: 243) в org.robolectri c .internal.bytecode.Sandbox.lambda $ runOnMainThread $ 0 (Песочница. java: 89) в java .util.concurrent.FutureTask.run (FutureTask. java: 266) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1149) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 624) в java .lang.Thread.run (Thread. java: 748) Вызывается: java .lang.NullPointerException в «Я уже скрываю этот пакет из-за т o политика компании, извините. Особенности. (Feature. java: 29) ... еще 12

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

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

...