Compose oferuje ComposeTestRule
, który umożliwia tworzenie testów animacji w sposób deterministyczny z pełną kontrolą nad zegarem testowym. Pozwoli Ci to zweryfikować pośrednie wartości animacji. Test może też trwać krócej 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 zainicjowaniu animacji, którą chcesz przetestować, możesz przesunąć zegar do przodu, używając funkcji advanceTimeBy
.
Warto pamiętać, że funkcja advanceTimeBy
nie przesuwa zegara dokładnie o określony czas. Zamiast tego zaokrągla go w górę do najbliższego czasu trwania, który jest iloczynem 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 okna tworzenia wiadomości
- Inne kwestie
- Dostosowywanie animacji {:#customize-animations}