Funkcja tworzenia udostępnia ComposeTestRule
, która umożliwia pisanie testów animacji w sposób deterministyczny z pełną kontrolą nad zegarem testowym. Pozwoli Ci to zweryfikować pośrednie wartości animacji. Poza tym test może trwać dłużej
niż czas trwania animacji.
ComposeTestRule
pokazuje swój zegar testowy jako mainClock
. Możesz ustawić właściwość autoAdvance
na wartość false, aby sterować zegarem w kodzie testowym. Po zainicjowaniu animacji, którą chcesz przetestować, możesz przesunąć zegar za pomocą funkcji advanceTimeBy
.
Warto zapamiętać, że advanceTimeBy
nie przesuwa zegara dokładnie o określoną wartość czasu trwania. Zamiast tego zaokrągla go do najbliższej długości, która jest mnożnikiem 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 JavaScript jest wyłączony
- Testowanie układu tworzenia wiadomości
- Inne uwagi
- Dostosowywanie animacji {:#customize-animations}