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

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

{% کلمه به کلمه %} {% فعل کمکی %} {% کلمه به کلمه %} {% فعل اضافه %}،

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

{% کلمه به کلمه %} {% فعل کمکی %} {% کلمه به کلمه %} {% فعل کمکی %}