Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LoggedInUserDaoTest fails, fails and hangs indefinitely #825

Open
mateuszkwiecinski opened this issue Apr 5, 2020 · 0 comments
Open

LoggedInUserDaoTest fails, fails and hangs indefinitely #825

mateuszkwiecinski opened this issue Apr 5, 2020 · 0 comments

Comments

@mateuszkwiecinski
Copy link

mateuszkwiecinski commented Apr 5, 2020

This repository is being mentioned multiple times as a showcase how to solve different problems when struggling with Android framework.
I came here to learn how to test room with suspendable functions so I checked out LoggedInUserDao with corresponding test LoggedInUserDaoTest

When I tried to run it I imediately got a crash at:

 java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f10002d
        at android.app.ActivityThread.installProvider(ActivityThread.java:6396)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853)
        at android.app.ActivityThread.access$1100(ActivityThread.java:199)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f10002d
        at android.content.res.ResourcesImpl.getResourcePackageName(ResourcesImpl.java:263)
        at android.content.res.Resources.getResourcePackageName(Resources.java:1970)
        at com.google.android.gms.common.internal.StringResourceValueReader.<init>(Unknown Source:5)
        at com.google.firebase.FirebaseOptions.fromResource(com.google.firebase:firebase-common@@17.1.0:160)
        at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@17.1.0:248)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(com.google.firebase:firebase-common@@17.1.0:53)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1917)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1892)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(com.google.firebase:firebase-common@@17.1.0:47)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6391)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853) 
        at android.app.ActivityThread.access$1100(ActivityThread.java:199) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

I'm an android developer, I got used to runtime crashes so I removed firebase dependency as a workaround to skip its initialization and just run the tests. But then I got:

$ adb shell am instrument -w -m    -e package io.plaidapp.designernews.data.database -e debug false io.plaidapp.designernews.test/androidx.test.runner.AndroidJUnitRunner
Connected to process 11665 on device 'Pixel_2_API_28 [emulator-5554]'.

Started running tests

kotlin.UninitializedPropertyAccessException: lateinit property database has not been initialized
	at io.plaidapp.designernews.data.database.LoggedInUserDaoTest.tearDown(LoggedInUserDaoTest.kt:61)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at androidx.test.internal.runner.junit4.statement.RunAfters.evaluate(RunAfters.java:80)
	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
	at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
	at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:389)
	at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2145)

Again runtime crash 👌
So let's add the dependency: kapt "androidx.room:room-compiler:${versions.room}" to make sure room classes there will actually be generated.

After all of that I faced issue that I could solve myself, the test were just stuck:

image

Does anyone here know how to test LoggedInUserDao class?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant