Я пишу модульный тест для нашего приложения с использованием библиотеки 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
===================== ====================================================
Спасибо и С уважением