我很难编写Android自动化测试。我正在将EditorInfo.IME_ACTION_DONE
动态分配给编辑文本,因此我的目标是检查以下两种情况:
EditorInfo.IME_ACTION_DONE
,在键入并按下按钮后,键盘应该不可见。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()
调用会影响结果,但看不到任何效果。
测试键盘上显示的哪个操作按钮(完成或下一步)也会有所帮助,但是我不确定是否可以实现。
谢谢!