Thursday, 6 May 2021

Internal error in Cloud Firestore (22.1.0) when running instrumentation test

I get an internal error message from Cloud Firestore. When I run this test, the App is getting a list of items from Firebase. This takes a while. In the meantime the test stops.

Every library is updated to the latest version. This SO thread does not give an satisfying answer. The error only occurs when running the test, the actual App is fine.

@InternalCoroutinesApi
@ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
class HomeTest {

    @get:Rule
    var reportHelper: ReportHelper? = Factory.getReportHelper()

    @get:Rule
    var activityRule = ActivityScenarioRule(MainActivity::class.java)

    // Executes tasks in a synchronous [TaskScheduler]
    @get:Rule
    var syncTaskExecutorRule = SyncTaskExecutorRule()

    @Before
    fun goToHomeScreen() {
        onView(withId(R.id.navigation_home)).perform(ViewActions.click())
    }

    @Test
    fun scrollToNextVideo() {
        onView(withId(R.id.recycler)).perform(swipeUp())
    }

    @After
    fun TearDown() {
        reportHelper?.label("Stopping App")
    }
}

Dependencies:

implementation "com.google.firebase:firebase-firestore:22.1.2"
implementation "com.google.firebase:firebase-database-ktx:19.7.0"
implementation "com.google.firebase:firebase-storage:19.2.2"
implementation "com.firebaseui:firebase-ui-storage:4.3.2"

Stacktrace:

Testing started at 18:40 ...

02/23 18:40:39: Launching 'HomeTest' on samsung SM-A515F.
App restart successful without requiring a re-install.
Running tests

$ adb shell am instrument -w -m  --no-window-animation  -e debug false -e class 'eu.theappfactory.someapp.data.ui.home.HomeTest' eu.theappfactory.someapp.acc.test/androidx.test.runner.AndroidJUnitRunner
Connected to process 981 on device 'samsung-sm_a515f-R58N52ZCJZL'.

Started running tests


java.lang.RuntimeException: Internal error in Cloud Firestore (22.1.0).
    at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$3(AsyncQueue.java:534)
    at com.google.firebase.firestore.util.AsyncQueue$$Lambda$3.run(Unknown Source:2)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:237)
    at android.app.ActivityThread.main(ActivityThread.java:8167)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: java.lang.NoSuchMethodError: No static method registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite;)V in class Lcom/google/protobuf/GeneratedMessageLite; or its super classes (declaration of 'com.google.protobuf.GeneratedMessageLite' appears in /data/app/eu.theappfactory.someapp.acc.test-K43eWkkKbA6iBOHgciWAfA==/base.apk)
    at com.google.firestore.v1.ListenRequest.<clinit>(ListenRequest.java:849)
    at com.google.firestore.v1.ListenRequest.getDefaultInstance(ListenRequest.java:854)
    at com.google.firestore.v1.FirestoreGrpc.getListenMethod(FirestoreGrpc.java:396)
    at com.google.firebase.firestore.remote.WatchStream.<init>(WatchStream.java:61)
    at com.google.firebase.firestore.remote.Datastore.createWatchStream(Datastore.java:115)
    at com.google.firebase.firestore.remote.RemoteStore.<init>(RemoteStore.java:167)
    at com.google.firebase.firestore.core.MemoryComponentProvider.createRemoteStore(MemoryComponentProvider.java:72)
    at com.google.firebase.firestore.core.ComponentProvider.initialize(ComponentProvider.java:135)
    at com.google.firebase.firestore.core.FirestoreClient.initialize(FirestoreClient.java:258)
    at com.google.firebase.firestore.core.FirestoreClient.lambda$new$0(FirestoreClient.java:105)
    at com.google.firebase.firestore.core.FirestoreClient$$Lambda$1.run(Unknown Source:8)
    at com.google.firebase.firestore.util.AsyncQueue.lambda$enqueue$2(AsyncQueue.java:436)
    at com.google.firebase.firestore.util.AsyncQueue$$Lambda$2.call(Unknown Source:2)
    at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1(AsyncQueue.java:322)
    at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$$Lambda$2.run(Unknown Source:4)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run(AsyncQueue.java:229)
    at java.lang.Thread.run(Thread.java:919)

Test running failed: Process crashed.
Tests ran to completion.


from Internal error in Cloud Firestore (22.1.0) when running instrumentation test

No comments:

Post a Comment