ทดสอบภาพเคลื่อนไหว

Compose มี ComposeTestRule ที่ให้คุณเขียนการทดสอบสำหรับภาพเคลื่อนไหว ในแบบที่กำหนดและควบคุมนาฬิกาทดสอบได้อย่างเต็มที่ ซึ่งช่วยให้คุณ เพื่อยืนยันค่าของภาพเคลื่อนไหวช่วงกลาง นอกจากนี้ยังทำการทดสอบได้เร็วขึ้น ระยะเวลาจริงของภาพเคลื่อนไหว

ComposeTestRule แสดงนาฬิกาทดสอบเป็น mainClock คุณสามารถตั้งค่า พร็อพเพอร์ตี้ autoAdvance เป็น "เท็จ" เพื่อควบคุมนาฬิกาในโค้ดทดสอบ หลัง เมื่อเริ่มเล่นภาพเคลื่อนไหวที่ต้องการทดสอบ นาฬิกาก็จะเลื่อนไปข้างหน้าได้ 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()
}