Android 测试:在使用 Espresso 进行测试时 "for Loop" 是否正确?

Android testing: is it correct implement "for Loop" in tests with Espresso?

我不确定在 Espresso 测试中它是否正确 "for loop"。我想先测试 ExpandableListView 中所有 parents 中的 child。 潜在代码:

for(i = 0; i < length; i++){
onData(anything())
    .inAdapterView(withId(R.id.userProfileActivityList))
    .atPosition(i)
    .check(matches(isDisplayed()))
    .perform(click())
    .check(matches(hasDescendant(isDisplayed())));
}

非常感谢。

当然可以,为什么不呢?对此我有两个想法。

答:你做的很好,风格很好,减少了代码重用等

B:为了结果的清晰度,我有时更喜欢测试用例中的代码冗长。当我的测试用例失败时,我想知道它们失败的确切原因,这样我就可以快速返回我的代码并修复它们。这也是"one assert per method"概念的动机。

想一想:当这个测试用例失败时,它是否会以一种清晰、轻松地引导开发人员使用正确功能的方式失败?

如果这个问题的答案是肯定的,还有什么重要的?当然,这包含了很多!在您的测试用例中保持总体良好的编码风格,具有可靠消息的良好断言,并确保您的断言被放置以提供可靠的堆栈跟踪……仅举几例!