Compose bietet ComposeTestRule
, mit dem du Tests für Animationen schreiben kannst
auf deterministische Weise mit vollständiger Kontrolle über die Testuhr. So können Sie
um Zwischenwerte für Animationen zu überprüfen. Außerdem kann ein Test schneller ausgeführt werden,
als die tatsächliche Dauer der Animation.
ComposeTestRule
gibt die Testuhr als mainClock
aus. Sie können die
autoAdvance
auf „false“, um die Uhr im Testcode zu steuern. Nachher
Initiieren der Animation, die getestet werden soll, lässt sich die Uhr mit
advanceTimeBy
Hinweis: advanceTimeBy
verschiebt die Uhr nicht genau um
die angegebene Dauer. Vielmehr rundet sie sie auf die nächste Dauer auf,
ein Multiplikator für die Framedauer.
@get:Rule val rule = createComposeRule() @Test fun testAnimationWithClock() { // Pause animations rule.mainClock.autoAdvance = false var enabled by mutableStateOf(false) rule.setContent { val color by animateColorAsState( targetValue = if (enabled) Color.Red else Color.Green, animationSpec = tween(durationMillis = 250) ) Box(Modifier.size(64.dp).background(color)) } // Initiate the animation. enabled = true // Let the animation proceed. rule.mainClock.advanceTimeBy(50L) // Compare the result with the image showing the expected result. // `assertAgainGolden` needs to be implemented in your code. rule.onRoot().captureToImage().assertAgainstGolden() }
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Layout von „Compose“ testen
- Weitere Hinweise
- Animationen anpassen {:#customize-animations}