提问人:AShX 提问时间:5/18/2023 最后编辑:AShX 更新时间:6/20/2023 访问量:246
Jetpack Compose 重试测试规则
Jetpack Compose retry test rule
问:
我有一个基于 Jetpack Compose 的应用程序,其中包含下一个基本测试规则设置:
val activityComposeRule by lazy { createAndroidComposeRule<MainActivity> }
// Barista retry rule if test failed
val flakyRule = FlakytestRule().allowFlakyAttemptsByDefault(2)
val permissionRule = ...
@get:Rule
val rulechain:RuleChain = run {
RuleChain.outerRule (permissionRule).around(activityComposeRule).around(flakyRule )
}
对于节点交互,在测试代码中使用 activityComposeRule
activityComposeRule.onNode(...)
问题是,当测试失败时,它无法重新运行测试 - 它失败了
Cannot call setContent twice per test!
我从开发人员那里找到了一个解决方案,他们建议将其与 一起使用 ,如下所示createEmptyComposeRule()
ActivityScenario<T>
@get:Rule
val composeTestRule = createEmptyComposeRule()
@get:Rule
val flakyRule = FlakyTestRule().allowFlakyAttemptsByDefault(defaultAttempts = 10)
private lateinit var scenario: ActivityScenario<ComponentActivity>
@Before
fun setup() {
scenario = ActivityScenario.launch(ComponentActivity::class.java)
}
@After
fun tearDown(){
scenario.close()
}
@Test
@Repeat(times = 10)
fun test() {
scenario.onActivity {
it.setContent { ... }
}
}
但是重构整个代码会很痛苦。
有没有办法使用咖啡师规则在不更改的情况下重新运行片状测试?createAndroidComposeRule<MainActivity>
提前致谢
VPg的。Google Tracker 的类似问题 - 链接
答: 暂无答案
评论