تست انیمیشن ها

Compose ComposeTestRule را ارائه می دهد که به شما امکان می دهد تست هایی را برای انیمیشن ها به شیوه ای قطعی با کنترل کامل بر ساعت تست بنویسید. این به شما امکان می دهد تا مقادیر متوسط ​​انیمیشن را تأیید کنید. علاوه بر این، یک تست می تواند سریعتر از مدت زمان واقعی انیمیشن اجرا شود.

ComposeTestRule ساعت آزمایشی خود را به عنوان mainClock نمایش می دهد. می توانید ویژگی autoAdvance را روی false تنظیم کنید تا ساعت در کد تست خود را کنترل کنید. پس از شروع انیمیشنی که می خواهید آزمایش کنید، ساعت را می توان با advanceTimeBy به جلو حرکت داد.

نکته ای که در اینجا باید به آن توجه کرد این است که advanceTimeBy ساعت را دقیقاً بر اساس مدت زمان مشخص شده حرکت نمی دهد. در عوض، آن را به نزدیکترین مدت زمان که ضریب مدت زمان فریم است، گرد می کند.

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

{% کلمه به کلمه %} {% آخر کلمه %} {% کلمه به کلمه %} {% آخر کلمه %}