我尝试对EditText执行功能测试,首先使用以下代码段重点关注字段,然后向其发送文本:
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
editText.requestFocus();
}
}
然后通过以下方式发送字符串:
instrumentation.waitForIdleSync();
instrumentation.sendStringSync("Some Text");
instrumentation.waitForIdleSync();
如果我运行测试并观察它,文本实际上是输入到EditText中,但是当我尝试将它用于断言时,EditText返回一个空文本:
assertFalse(editText.getText().toString().isEmpty());
我已尝试记录文本,但它确实返回一个空字符串,就好像EditText中没有文本一样。我也试过在一个单独的Runnable上运行断言,或者在一段延迟之后无效。
临时解决方案: 至于此期间,我通过手动添加
来通过测试editText.setText("Some Text");
在断言之前,虽然我认为可能有更好或更正确的方式。
答案 0 :(得分:1)
我发现的另一种解决方法是使用Android Espresso。通过检测将字符串发送到EditText后,我可以通过以下方式断言其有效性:
onView(withText("Some Text")).check(matches(isDisplayed()));