Espresso'yla tek bir test hatası yapıyorum. Aşağıda, görüntülenen bir iletişim kutusunda bir TextView test etmektir. Aşağıdaki hatayı alıyorum: Espresso withText in TextView Seçili eşleşme görüntülenmiyor. Göster View
com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'with string from resource id: <2131099772>' doesn't match the selected view.
Expected: with string from resource id: <2131099772>[my_content] value: Test Content Available
Got: "TextView{id=2131296340, res-name=dialog_content, visibility=VISIBLE, width=620, height=38, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=Test Content Available, input-type=0, ime-target=false}"
at dalvik.system.VMStack.getThreadStackTrace(Native Method)
at java.lang.Thread.getStackTrace(Thread.java:579)
at com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:69)
at com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:40)
at com.google.android.apps.common.testing.ui.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:159)
at com.google.android.apps.common.testing.ui.espresso.ViewInteraction.check(ViewInteraction.java:133)
at com.myapp.testContentDetails(FPATest.java:109)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onStart(GoogleInstrumentationTestRunner.java:167)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
Caused by: junit.framework.AssertionFailedError: 'with string from resource id: <2131099772>' doesn't match the selected view.
Expected: with string from resource id: <2131099772>[my_content] value: Test Content Available
Got: "TextView{id=2131296340, res-name=dialog_content, visibility=VISIBLE, width=620, height=38, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=Test Content Available, input-type=0, ime-target=false}"
at com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.assertThat(ViewMatchers.java:789)
at com.google.android.apps.common.testing.ui.espresso.assertion.ViewAssertions$2.check(ViewAssertions.java:76)
at com.google.android.apps.common.testing.ui.espresso.ViewInteraction$2.run(ViewInteraction.java:145)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5081)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Yani açıkça, görünüm bulunur ve bunun ayrıntıları var içinde, sen değer Beklediğim = metni görebilirsiniz. Yine de uymuyor diyor. Görüntüle istisna görünümü hiyerarşisinde gösterir bile aracılığıyla şu testi açıklamada
onView(withId(R.id.dialog_content)).check(
matches(withText(R.string.my_content)));
ben de aşağıdaki deyimi ile yapıyor çalıştı, ancak bir NoMatchingViewException var olan çalıştırılır.
onView(withText(R.string.my_content)).check(
matches(isDisplayed()));
bu başarısız neden üzerinde herhangi bir yardım? Ifade ile bir kardeşi alanda withText() isDisplayed() yapabiliyorum dikkati.
Espresso ile birlikte gelen dahili withText (int resourceId) buggy'dir. Yalnızca kontrol edilen metin bir java.lang.String ise, ancak kullanılan birçok metin, Düzenlenebilir veya Kullanılabilir gibi diğer CharSequence alt sınıflarıdır. Birlikte yazdığınız metnin türünün aslında Dize olduğundan ve türüne bakmadan Dize içeriğiyle eşleşen kendi eşleştiricinizi yazmamasına dikkat edin. – haffax
@haffax Mükemmel! Metni TextView'de bir Html.fromHtml() ile ayarlamıştım. Bu da elbette bir Spanned nesnesiyle sonuçlandı. # #MatchesSafely() 'de textView.getText()' de #toString() yaptıran özel bir eşleştirici yazdı ve mükemmel çalışıyor. Bunu bir cevap olarak göndermek isterseniz, kabul edildi olarak işaretleyeceğim, teşekkürler! – JCricket