android - Espresso 测试随机失败,可能是时间问题
问题描述
我有一些测试似乎只有在我第一次运行它们时才会失败,这里是其中一个示例;
class OptionDialogTest {
@get:Rule
val activityScenarioRule = activityScenarioRule<MainActivity>()
@Test
fun optionDialogTest() {
val selected = R.string.manage_categories
var dialog: OptionDialog? = null
activityScenarioRule.scenario.onActivity { activity: MainActivity? ->
dialog = OptionDialog("test", "test", arrayOf(R.string.drawer_categories,selected), activity as Context)
dialog!!.setConfirm { _, _ -> }
dialog!!.show()
}
onView(withId(R.id.custom)).perform(click()) //this line sometimes doesn't execute causing the test to fail, presumably it doesn't execute in time.
onView(withText(R.string.manage_categories)).inRoot(isPlatformPopup()).perform(click())
onView(withText(R.string.Yes)).inRoot(isDialog()).perform(click())
assertEquals(dialog!!.getSelected(), selected)
}
}
android studio给出的错误是;Waited for the root of the view hierarchy to have window focus and not request layout for 10 seconds. If you specified a non default root matcher, it may be picking a root that never takes focus.
我唯一的猜测是某些代码没有以完全异步的方式执行。我不知道其他开发人员是否经历过随机测试失败,或者我将如何解决这个问题。
任何帮助或想法表示赞赏。
解决方案
推荐阅读
- stackdriver - 我可以将有效负载添加到对 Opsgenie 的 Stackdriver 调用吗
- c# - asp.net core - AddService 使用选项 iniside IServiceCollection 扩展
- azure-devops - Azure Dev Ops 内部部署
- sdk - 如果需要国家和邮政编码权限,可以对 Alexa 提出请求吗?
- mapbox - Mapbox决定重叠顺序
- apache-kafka - WSO2 无法从 Kafka 主题接收数据
- ios - iOS - 在边界限制内绘制
- javascript - Daterangepicker 与 callback 和 apply.daterangepicker 的行为不同
- javascript - Material UI AppBar 不使用主题颜色
- xslt - 用子节点值分组并将分组的值相加一次