Daniel Gomez Rico
Daniel Gomez Rico

Reputation: 15945

Junit4 Android TestField text test

My test is:

@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":

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 doesn't make sense to me, it should not print the actual value of the field vs the compared value?

Upvotes: 6

Views: 849

Answers (2)

Francislainy Campos
Francislainy Campos

Reputation: 4164

As per @mbmc answers, the error message is not too important in this scenario. The test is failing as you're expecting to get 45 but your textview actually has the value of 45.00. If you make your test pass it should get the text from the textview correctly.

Upvotes: 2

mbmc
mbmc

Reputation: 5115

I had the same problem and spent quite some time trying to understand the root cause. It turned out the strings were not equals, that's why it was failing. The error message is not really explicit because it's printing the whole object properties etc instead of saying: expected: "foo", received: "bar". But the strings are actually compared.

Upvotes: 5

Related Questions