3 votes

Erreur interne dans Cloud Firestore (22.1.0) lors de l'exécution du test d'instrumentation

Je reçois un message d'erreur interne de Cloud Firestore. Lorsque j'exécute ce test, l'application obtient une liste d'articles de Firebase. Cela prend un certain temps. Pendant ce temps, le test s'arrête.

Chaque bibliothèque est mise à jour à la dernière version. Ce site Fil conducteur ne donne pas de réponse satisfaisante. L'erreur ne se produit que lors de l'exécution du test, l'application actuelle fonctionne bien.

@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")
    }
}

build.gradle (niveau App) :

android {
    configurations.all() { configuration ->
//    exclude group: "com.google.protobuf", module: "protobuf-javalite"

       exclude group: "com.google.protobuf", module: "protobuf-java"
//    exclude group: "io.grpc", module: "grpc-protobuf-lite" // tried this, but App fails to compile
}
dependencies {
    implementation "com.google.firebase:firebase-firestore-ktx:23.0.0"
    implementation "com.google.firebase:firebase-database-ktx:20.0.0"
    implementation "com.google.firebase:firebase-storage-ktx:20.0.0"
    implementation "com.firebaseui:firebase-ui-storage:4.3.2"
}

Voici mes dépendances.txt

Stacktrace :

Testing started at 18:40 ...

02/23 18:40:39: Launching 'HomeTest' on Samsung SM-A515F.
App restarts successfully 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.

a essayé ceci ne fonctionne pas. ceci aussi n'a pas fonctionné.

0voto

syslogic Points 749

TL;DR : protobuf-javalite est ce que vous pouvez vouloir construire contre.

Il s'agit d'un problème connu et avec une forte probabilité, il est causé par des parties de la build.gradle que vous avez retenu. Tout ce que je peux dire, c'est qu'en excluant le module protobuf-javalite dépouille la méthode statique registerDefaultInstance donc on devrait simplement exclure protobuf-java à la place :

configurations.all() { configuration ->
    // exclude group: "com.google.protobuf", module: "protobuf-javalite"
    exclude group: "com.google.protobuf", module: "protobuf-java"
}

L'utilisation de la dépendance Kotlin pourrait également avoir un sens, mais cela ne devrait pas être la cause :

implementation 'com.google.firebase:firebase-firestore-ktx:22.1.2'

Pour vérifier ce qui est réellement emballé : ./gradlew :app:dependencies > dependencies.txt .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X