繁体   English   中英

为什么我在 Cloud Firestore (24.1.2) 中出现内部错误。 仅在运行浓缩咖啡测试时在我的 Android 应用中?

[英]Why am I getting Internal error in Cloud Firestore (24.1.2). In my Android app only when running an espresso test?

该应用程序似乎运行良好,并且数据加载到应用程序没有问题,但只有在运行测试以查看我的约会应用程序的匹配卡是否存在时,我才会收到此错误。 我用模拟本地数据运行了同样的测试,没有任何问题。 当我将我的应用程序连接到 firebase 时,我收到此错误。

原因:java.lang.RuntimeException:Cloud Firestore (24.1.2) 中的内部错误。

这是我正在运行的测试的代码:

public void matchesCardExists(){
        onView(withId(R.id.name)).perform(replaceText("Bill"));
        onView(withId(R.id.email)).perform(replaceText("test@gmail.com"));
        onView(withId(R.id.user_name)).perform(replaceText("bigbill"));
        onView(withId(R.id.description)).perform(replaceText("This is a test"));
        onView(withId(R.id.occupation)).perform(replaceText("I work at test"));

        onView(withId(R.id.dateButton)).perform(click());

        onView(withClassName(Matchers.equalTo(DatePicker.class.getName())))
                .perform(PickerActions.setDate(2000, 2 + 1, 5));

        onView(withId(android.R.id.button1)).perform(click());

        onView(withId(R.id.submitButton)).perform(click());

        openActionBarOverflowOrOptionsMenu(ApplicationProvider.getApplicationContext());
        onView(withText("Matches")).perform(click());

        onView(isRoot()).perform(HelpersViewMatcher.waitView(withText("Cool Guy Mike"), 100000));

        onView(withRecyclerView(R.id.recycler_view).atPosition(0)).check(matches(hasDescendant(withText("Cool Guy Mike"))));

基本上,它填写一个表格进行注册并将用户发送到一个带有匹配片段的选项卡式活动。 匹配片段的卡片中加载了来自 Firestore 的数据。 测试检查卡片的第一个位置是否有字符串“Cool Guy Mike”。

这是来自 firebase 的堆栈跟踪。

java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at com.example.datingapp.RecyclerViewMatcher$1.matchesSafely(RecyclerViewMatcher.java:56)
at com.example.datingapp.RecyclerViewMatcher$1.matchesSafely(RecyclerViewMatcher.java:30)
at org.hamcrest.TypeSafeMatcher.matches(TypeSafeMatcher.java:67)
at androidx.test.espresso.base.ViewFinderImpl$MatcherPredicateAdapter.apply(ViewFinderImpl.java:1)
at androidx.test.espresso.core.internal.deps.guava.collect.Iterators$5.computeNext(Iterators.java:3)
at androidx.test.espresso.core.internal.deps.guava.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:2)
at androidx.test.espresso.core.internal.deps.guava.collect.AbstractIterator.hasNext(AbstractIterator.java:5)
at androidx.test.espresso.base.ViewFinderImpl.getView(ViewFinderImpl.java:7)
at androidx.test.espresso.ViewInteraction$2.call(ViewInteraction.java:5)
at androidx.test.espresso.ViewInteraction$2.call(ViewInteraction.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

这是Android Studio中的错误

androidx.test.espresso.PerformException: Error performing 'single click - At Coordinates: 1082, 465 and precision: 16, 16' on view 'Animations or transitions are enabled on the target device.
For more info check: https://developer.android.com/training/testing/espresso/setup#set-up-environment

an instance of android.widget.TextView and view.getText() with or without transformation to match: is "Matches"'.
    at androidx.test.espresso.PerformException$Builder.build(PerformException.java:1)
    at androidx.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:9)
    at androidx.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:7)
    at androidx.test.espresso.ViewInteraction.waitForAndHandleInteractionResults(ViewInteraction.java:8)
    at androidx.test.espresso.ViewInteraction.desugaredPerform(ViewInteraction.java:11)
    at androidx.test.espresso.ViewInteraction.perform(ViewInteraction.java:4)
    at com.example.datingapp.MainActivityTest.matchesCardExists(MainActivityTest.java:265)
    ... 29 trimmed
Caused by: java.lang.RuntimeException: Internal error in Cloud Firestore (24.1.2).
    at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$3(AsyncQueue.java:539)
    at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$jx84dqgUsF4ojecSMurRqFLFD1Y.run(Unknown Source:2)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at androidx.test.espresso.base.Interrogator.loopAndInterrogate(Interrogator.java:14)
    at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:8)
    at androidx.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:1)
    at androidx.test.espresso.base.UiControllerImpl.loopMainThreadForAtLeast(UiControllerImpl.java:8)
    at androidx.test.espresso.action.Tap$1.sendTap(Tap.java:6)
    at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:6)
    at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:2)
    at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:22)
    at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:1)
    at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:2)
    at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:1)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
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/com.example.datingapp.test-LB1xq3vHsZYBNdA8gmmVkQ==/base.apk)
    at com.google.firestore.v1.ListenRequest.<clinit>(ListenRequest.java:873)
    at com.google.firestore.v1.ListenRequest.getDefaultInstance(ListenRequest.java:878)
    at com.google.firestore.v1.FirestoreGrpc.getListenMethod(FirestoreGrpc.java:384)
    at com.google.firebase.firestore.remote.WatchStream.<init>(WatchStream.java:61)
    at com.google.firebase.firestore.remote.Datastore.createWatchStream(Datastore.java:131)
    at com.google.firebase.firestore.remote.RemoteStore.<init>(RemoteStore.java:167)
    at com.google.firebase.firestore.core.MemoryComponentProvider.createRemoteStore(MemoryComponentProvider.java:78)
    at com.google.firebase.firestore.core.ComponentProvider.initialize(ComponentProvider.java:143)
    at com.google.firebase.firestore.core.FirestoreClient.initialize(FirestoreClient.java:272)
    at com.google.firebase.firestore.core.FirestoreClient.lambda$new$0$FirestoreClient(FirestoreClient.java:109)
    at com.google.firebase.firestore.core.-$$Lambda$FirestoreClient$Eq-cAcb1C1mM4tyiJsLJXZ13tyU.run(Unknown Source:8)
    at com.google.firebase.firestore.util.AsyncQueue.lambda$enqueue$2(AsyncQueue.java:441)
    at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$Y9GO7zO2DX6MzQJ5TbKtKW_NzO0.call(Unknown Source:2)
    at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1(AsyncQueue.java:327)
    at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$SynchronizedShutdownAwareExecutor$pKSAgg-ozJ8RbUveSl-44aUfFQw.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:234)
    at java.lang.Thread.run(Thread.java:919)

事实证明,我有一些过时的 gradle 依赖项。 我不确定它是哪一个,但我从以下位置更改了我的应用程序 gradle 依赖项:


    // Declare the dependency for the Firebase Authentication library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth'

    // Also declare the dependency for the Google Play services library and specify its version
    implementation 'com.google.android.gms:play-services-auth:20.2.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'com.android.support.test:rules:1.0.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    androidTestImplementation 'androidx.test:core:1.4.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.room:room-testing:2.4.2'
    annotationProcessor 'androidx.room:room-compiler:2.4.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    androidTestImplementation 'androidx.test.espresso:espresso-intents:3.4.0'
    androidTestImplementation('androidx.test.espresso:espresso-contrib:3.4.0') {
        exclude group: 'com.android.support', module: 'appcompat'
        exclude group: 'com.android.support', module: 'support-v4'
        exclude module: 'recyclerview-v7'
    }
    implementation platform('com.google.firebase:firebase-bom:30.0.0')

}

改为:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.6.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation 'com.android.volley:volley:1.2.1'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation platform('com.google.firebase:firebase-bom:29.3.1')
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'com.google.firebase:firebase-firestore:24.1.2'
    implementation 'androidx.room:room-runtime:2.4.2'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation('androidx.test.espresso:espresso-contrib:3.4.0') {
        exclude module: "protobuf-lite"
    }
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    androidTestImplementation 'androidx.test:runner:1.4.0'
    androidTestImplementation 'androidx.test:rules:1.4.0'
    androidTestImplementation 'androidx.room:room-testing:2.4.2'
    annotationProcessor 'androidx.room:room-compiler:2.4.2'
}

这似乎解决了问题,我的测试现在运行良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM