Compose offre ComposeTestRule, che ti consente di scrivere test per le animazioni in modo deterministico con il controllo completo dell'orologio di test. In questo modo, puoi verificare i valori intermedi dell'animazione. Inoltre, un test può essere eseguito più rapidamente della durata effettiva dell'animazione.
ComposeTestRule espone il relativo 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 in base alla durata specificata. Al contrario, lo arrotonda 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
- Personalizzare le animazioni {:#customize-animations}