Compose offre ComposeTestRule
che ti consente di scrivere test per le animazioni
in modo deterministico con il pieno controllo dell'orologio di test. In questo modo puoi verificare i valori di animazione intermedi. Inoltre, un test può essere eseguito più rapidamente
rispetto alla durata effettiva dell'animazione.
ComposeTestRule
espone il suo 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, l'orologio può essere spostato in avanti con
advanceTimeBy
.
Tieni presente che advanceTimeBy
non sposta l'orologio esattamente della durata specificata. ma lo arrotonda per eccesso alla durata più vicina che sia
un multiplo 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 Composizione
- Altre considerazioni
- Personalizzare le animazioni {:#customize-animations}