Compose oferuje ComposeTestRule
, który umożliwia tworzenie testów animacji w sposób deterministyczny z pełną kontrolą nad zegarkiem testowym. Dzięki temu możesz zweryfikować wartości pośrednie animacji. Test może też działać szybciej niż faktyczny czas trwania animacji.
ComposeTestRule
udostępnia zegar testowy jako mainClock
. Aby kontrolować zegar w kodzie testowym, możesz ustawić właściwość autoAdvance
na wartość false. Po rozpoczęciu animacji, którą chcesz przetestować, możesz przesunąć zegar o jeden krok za pomocą przycisku advanceTimeBy
.
Warto pamiętać, że advanceTimeBy
nie przesuwa zegara dokładnie o określony czas. Zamiast tego zaokrągla go w górę do najbliższego czasu, który jest wielokrotnością czasu trwania klatki.
@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() }
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy obsługa JavaScript jest wyłączona
- Testowanie układu tworzenia wiadomości
- Inne kwestie
- Dostosowywanie animacji {:#customize-animations}