Compose, test saati üzerinde tam kontrol sağlayarak animasyonlar için testleri deterministik bir şekilde yazmanıza olanak tanıyan ComposeTestRule
sunar. Bu, ara animasyon değerlerini
doğrulamanızı sağlar. Buna ek olarak, test, animasyonun gerçek
süresinden daha hızlı çalışabilir.
ComposeTestRule
, test saatini mainClock
olarak gösterir. Test kodunuzdaki saati kontrol etmek için autoAdvance
özelliğini false (yanlış) olarak ayarlayabilirsiniz. Test etmek istediğiniz animasyon başlatıldıktan sonra saat advanceTimeBy
ile ileri alınabilir.
advanceTimeBy
işlevinin saati tam olarak belirtilen süre kadar hareket ettirmediği unutulmamalıdır. Bunun yerine, sayıyı kare süresinin çarpanı olan en yakın süreye yuvarlar.
@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() }
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Oluşturma düzeninizi test etme
- Diğer noktalar
- Animasyonları özelleştirme {:#customize-animations}