Compose, ComposeTestRule test saati üzerinde tam kontrol sağlayarak animasyonlar için deterministik bir şekilde testler yazmanıza olanak tanır. Bu sayede ara animasyon değerlerini doğrulayabilirsiniz. Ayrıca, 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 olarak ayarlayabilirsiniz. Test etmek istediğiniz animasyonu başlattıktan sonra advanceTimeBy ile saati ileri alabilirsiniz.
Burada dikkat edilmesi gereken nokta, advanceTimeBy komutunun saati tam olarak belirtilen süre kadar ileri almadığıdır. Bunun yerine, kare süresinin katı 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
- Dikkat edilmesi gereken diğer noktalar
- Animasyonları özelleştirme {:#customize-animations}