首页 > 解决方案 > 浓缩咖啡 typeText() 与 editText.setKeyListener(DigitsKeyListener.getInstance(null, false, true));

问题描述

为了帮助 EditText 拒绝不是有效数字的击键,您可以像这样设置 DigitsKeyListener:

myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true));

这在手动测试下有效 - 你可以输入42..,第二个点的击键消失了,就像它从未发生过一样。如果我们帮助用户输入浮点数,那就太好了,因为我们不需要等到他们提交表单然后设置错误。

但我不能 TDD DigitsKeyListener,因为在 Espresso 中这有效:

onView(withId(R.id.my_edit_text)).perform(typeText("42.."));

第二个.进入现场,所以我不能断言 KeyListener 拒绝了它!

(我可以 TDD设置KeyListener ,但这是对工件而不是功能的编程。)

如果typeText()绕过 KeyListeners,它似乎在原始击键输入级别起作用,它的意义何在?单独发送每个密钥也没有被过滤:

onView(withId(R.id.my_edit_text)).perform(typeText("4")); onView(withId(R.id.my_edit_text)).perform(typeText("2")); onView(withId(R.id.my_edit_text)).perform(typeText(".")); onView(withId(R.id.my_edit_text)).perform(typeText("."));

标签: androidandroid-viewandroid-espresso

解决方案


推荐阅读