Tworzenie wiadomości udostępnia funkcję ComposeTestRule
, która pozwala pisać testy animacji
w deterministyczny sposób i z pełną kontrolą nad zegarem testowym. Dzięki temu możesz:
do weryfikacji pośrednich wartości animacji. Test może też trwać krócej niż faktyczny czas trwania animacji.
ComposeTestRule
udostępnia zegar testowy jako mainClock
. Jako
autoAdvance
z wartością false, aby sterować zegarem w kodzie testowym. Po uruchomieniu 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. Jest natomiast zaokrąglane w górę do najbliższego czasu trwania, który jest
mnożnika 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 wyświetla się, gdy JavaScript jest wyłączony
- Testowanie układu okna tworzenia wiadomości
- Inne uwagi
- Dostosowywanie animacji {:#customize-animations}