Compose, test saati üzerinde tam kontrolle animasyonlar için belirleyici bir şekilde testler yazmanıza olanak tanıyan ComposeTestRule
olanağı sunar. Böylece ara animasyon değerlerini doğrulayabilirsiniz. Ayrıca testler 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 saat, advanceTimeBy
ile ileri hareket ettirilebilir.
Burada unutulmaması gereken bir nokta da advanceTimeBy
özelliğinin saati tam olarak belirtilen süre kadar hareket ettirmemesidir. Bunun yerine, 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: Bağlantı metni JavaScript kapalıyken görüntülenir
- Oluşturma düzeninizi test etme
- Dikkat edilmesi gereken diğer noktalar
- Animasyonları özelleştirme {:#customize-animations}