Animasyonları test etme

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()
}

ziyaret edin.