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.
Un aspetto da tenere 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}