仪器测试与层次结构中的视图 ID 不匹配

Instrumentation test doesn't match view ids from hierarchy

简而言之,我正在尝试使用 Espresso 将视图与 ID 相匹配,例如 R.id.signCheckbox。当我尝试匹配该视图时,如果很明显该视图存在,我将收到 NoMatchingView 异常。

经过一些调试后,我发现在我的测试 class 中,当我评估 R.id.signCheckbox 时,我会得到 ID:-1000984。在 NoMatchingViewExceptioncause 中,您实际上可以以某种格式读取整个视图层次结构。我发现复选框有不同的 ID 2131362821。我已经阅读了项目 R.java,它还将 2131362821 分配给 R.id.signCheckbox

因此,当我匹配 withId(2131362821) 时,它确实有效。为什么它不能与 R.id.signCheckbox 一起使用以及 -1000984 id 来自哪里?

看来老 Invalidate/Restart/Clean/Rebuild 解决了这个问题。

ID 仍然是负数(如 -1000984),与 R.java ID 不匹配,但 Espresso 将成功匹配视图。