Compose, animasyonlar için testler yazmanıza olanak tanıyan ComposeTestRule
sunar
tam kontrole sahip olmasını sağlayabilirsiniz. Bu sayede
kullanabilirsiniz. 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
Önemli bir noktaya değinelim: advanceTimeBy
, zamanı tam olarak
belirtilen süre. Bunun yerine, tahmine yuvarlanan en yakın süreye
çarpanlarına sahiptir.
@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}