Compose, test saati üzerinde tam kontrol sahibi olarak animasyonlar için testleri deterministik bir şekilde yazmanıza olanak tanıyan ComposeTestRule
özelliğini sunar. Bu sayede, ara animasyon değerlerini doğrulayabilirsiniz. Ayrıca test, belirli bir süre içinde
gerçek süresinden daha uzun olamaz.
ComposeTestRule
, test saatini mainClock
olarak gösterir. Bu ayarı,
Test kodunuzdaki saati kontrol etmek için autoAdvance
özelliğini false (yanlış) değerine ayarlayın. Şu tarihten sonra:
animasyonu başlatırsanız saat ileri doğru hareket ettirilebilir.
advanceTimeBy
Burada dikkat edilmesi gereken bir nokta, advanceTimeBy
işlevinin saati tam olarak belirtilen süre kadar hareket ettirmemesidir. Bunun yerine, tahmine yuvarlanan en yakın süreye
çarpanlarına ayarlayın.
@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}