使用Expresso

时间:2019-05-23 16:59:52

标签: android unit-testing automated-tests user-input android-espresso

我很难编写Android自动化测试。我正在将EditorInfo.IME_ACTION_DONE动态分配给编辑文本,因此我的目标是检查以下两种情况:

  1. 编辑文本带有EditorInfo.IME_ACTION_DONE,在键入并按下按钮后,键盘应该不可见。
  2. 编辑文本具有EditorInfo.IME_ACTION_NEXT,并且在键入并按下按钮后,键盘应该可见,因为现在用户应该在下一个编辑文本中键入

这是我的考试班:

@RunWith(AndroidJUnit4.class)
@SmallTest
public class EmailActivityTest {

    @Rule public ActivityScenarioRule<EmailActivity> activityScenarioRule
        = new ActivityScenarioRule<>(EmailActivity.class);

    @Test
    public void testEditTextDoneEmail() {
        // Type email and press the action button
        onView(withId(R.id.emailEditText)).perform(typeText(EMAIL_VALID), pressImeActionButton());

        Context ctx = ApplicationProvider.getApplicationContext();
        InputMethodManager inputMethodManager = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE);

        Assert.assertTrue(inputMethodManager.isAcceptingText());
    }

}

编辑文本显示带有完成按钮的键盘,然后键盘关闭并通过测试。但是,如果我不按操作按钮,就像这样:

onView(withId(R.id.emailEditText)).perform(typeText(EMAIL_VALID));

测试也通过了,所以我应该缺少一些东西,因为删除pressImeActionButton()调用会影响结果,但看不到任何效果。

测试键盘上显示的哪个操作按钮(完成或下一步)也会有所帮助,但是我不确定是否可以实现。

谢谢!

0 个答案:

没有答案