Android: 检查按钮是否启用

19

我在测试我的应用程序时遇到了问题。我创建了一个 Espresso 测试,该测试应该失败,因为每当我在模拟器中启动我的应用程序时,我都会得到预期的行为。以下是我的测试:

 onView(withText("wrong answer")).perform(click());
 onView(withId(R.id.nextQuestionButton)).check(matches(isEnabled()));

启动测试时没有任何报告,但是当单击文本为“错误答案”的单选按钮时,不应启用nextQuestionButton。

1个回答

46

根据我的理解,您希望它的工作方式是这样的:

如果nextQuestionButton启用,则执行以下操作:

  • 单击“错误答案”,
  • 检查nextQuestionButton是否更改为未启用状态。

如果是这样,代码应该像这样:

onView(withId(R.id.nextQuestionButton)).check(matches(isEnabled()));
onView(withText("wrong answer")).perform(click());
onView(withId(R.id.nextQuestionButton)).check(matches(not(isEnabled())));

Espresso允许您在测试中使用Hamcrest matchers。

Hamcrest 1.3快速参考.

如果您还没有这样做,请查看此内容:

Espresso 2.1. Espresso Cheat Sheet Master [updated]

根据您帖子的这个片段:

启动测试时,没有任何报告,而radioButton的文本为“错误答案”的选项被单击后应该不会启用nextQuestionButton

这意味着您没有设置禁用下一个问题按钮,因此Espresso通过了此测试。


1
我无法使用 matches(isEnabled()),它说我们需要viewAssertion但找到了布尔值!!!!我正在使用Kotlin。 - milad salimi
作弊表站点未找到!请更新您的答案。 - dudi
@dudi 抱歉给你带来不便。链接已更新。还需要其他帮助吗? :-) - piotrek1543
matches(not(isEnabled())) 对我不起作用。我得到了这两个错误:类型不匹配:推断类型为Validator,但期望的是Matcher<in View!>!和类型不匹配:推断类型为Matcher<View!>!但期望的是Validator。如何解决? - Dominik
您也可以使用matches(isNotEnabled()) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接