在 UIAutomator 测试中引用资源标识符的最佳方式是什么?

What is the best way to reference resource identifiers in UIAutomator tests?

我最近开始使用 UIautomator 来测试我的 Android 个应用程序。

以下代码片段显示了测试用例代码中的典型语句:

mDevice.findObject(By.res(BASIC_SAMPLE_PACKAGE, "editTextUserInput"))
                .setText(STRING_TO_BE_TYPED);

如您所见,"editTExtUserInput" 被引用为字符串。在我的应用程序源代码中,这被定义为资源标识符 (R.id.editTextUserInput)。

在目前的情况下,当我在我的应用程序中更改标识符的名称时,我所有的测试用例都会变得一团糟(我将不得不手动更改所有字符串值)...有没有人有此问题的解决方案?

Google 的 Android 测试团队的大部分成员一直在花时间构建 Espresso,一个新的 UI 测试框架,专门使这些情况更容易。例如,该行可以是

onView(withId(R.id.editTextUserInput)).typeText(STRING_TO_BE_TYPED);

标识符自动完成和重构之类的东西也会影响这些测试。