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
- ملاحظات دیگر
- سفارشی کردن انیمیشن ها {:#customize-animations}