TestTield text test for Android Junit4

My test:

@RunWith(AndroidJUnit4.class) @LargeTest public class TipActivityTests { @Rule public ActivityTestRule<TipActivity> mActivityRule = new ActivityTestRule<>(TipActivity.class); @Test public void initialValues() { onView(withId(R.id.tip_label_base_price)).check(matches(ViewMatchers.withText("45""))); } } 

But I get the error 'with text: is "45"' doesn't match the selected view. Expected: with text: is "45" 'with text: is "45"' doesn't match the selected view. Expected: with text: is "45" :

 android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'with text: is "45"' doesn't match the selected view. Expected: with text: is "45" Got: "AppCompatTextView{id=2131689669, res-name=tip_label_base_price, visibility=VISIBLE, width=266, height=106, 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=141.0, y=96.0, text=$ 45.00, input-type=0, ime-target=false, has-links=false}" 

It seems to me that this does not make sense, should it not print the actual value of the field compared to the compared value?

+5
source share
1 answer

I had the same problem, and I spent quite a bit of time trying to understand the root cause. It turned out that the threads are not equal, so he failed. The error message is not explicitly explicit, because it prints all the properties of the object, etc. Instead of saying: expected: "foo", received: "bar" . But the strings are actually compared.

+2
source

All Articles