我正在尝试对 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");
在断言之前,尽管我认为可能有更好或更正确的方法。
最佳答案
我发现的另一种解决方法是使用 Android Espresso。通过检测将字符串发送到 EditText 后,我可以通过以下方式断言其有效性:
onView(withText("Some Text")).check(matches(isDisplayed()));
关于java - android测试-EditText即使有字符也返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30229034/