Compose offre ComposeTestRule
che ti consente di scrivere test per le animazioni
in modo deterministico con il pieno controllo sull'orologio di test. In questo modo puoi verificare i valori intermedi dell'animazione. Inoltre, un test può essere eseguito più rapidamente rispetto alla durata effettiva dell'animazione.
ComposeTestRule
espone il proprio orologio di test come mainClock
. Puoi impostare la proprietà autoAdvance
su false per controllare l'orologio nel codice di test. Dopo aver avviato l'animazione che vuoi testare, puoi far avanzare l'orologio con advanceTimeBy
.
Tieni presente che advanceTimeBy
non sposta l'orologio esattamente per la durata specificata. Viene invece arrotondata per eccesso alla durata più vicina che è un moltiplicatore della durata del frame.
@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() }
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Testare il layout di Compose
- Altre considerazioni
- Personalizza le animazioni {:#customize-animations}