Compose با چارچوب های آزمایشی رایج ادغام می شود.
قابلیت همکاری با اسپرسو
در یک برنامه ترکیبی، می توانید اجزای Compose را در سلسله مراتب نمای و نماها در داخل Compose composables (از طریق Composable AndroidView
) پیدا کنید.
هیچ مرحله خاصی برای مطابقت با هر دو نوع مورد نیاز نیست. شما نماها را با onView
اسپرسو و عناصر Compose را با ComposeTestRule
مطابقت می دهید.
@Test
fun androidViewInteropTest() {
// Check the initial state of a TextView that depends on a Compose state.
Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
// Click on the Compose button that changes the state.
composeTestRule.onNodeWithText("Click here").performClick()
// Check the new value.
Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}
قابلیت همکاری با UiAutomator
بهطور پیشفرض، Composableها از UiAutomator فقط با توصیفگرهای مناسب (متن نمایش داده شده، توضیحات محتوا و غیره) قابل دسترسی هستند. اگر میخواهید به هر composable که از Modifier.testTag
استفاده میکند دسترسی داشته باشید، باید ویژگی معنایی testTagsAsResourceId
برای زیردرخت composable خاص فعال کنید. فعال کردن این رفتار برای کامپوزیشنهایی مفید است که دسته منحصربهفرد دیگری ندارند، مانند موارد قابل پیمایش (مثلاً LazyColumn
).
ویژگی معنایی را فقط یک بار در سلسله مراتب composables خود فعال کنید تا مطمئن شوید همه composable های تودرتو با Modifier.testTag
از UiAutomator قابل دسترسی هستند.
Scaffold(
// Enables for all composables in the hierarchy.
modifier = Modifier.semantics {
testTagsAsResourceId = true
}
){
// Modifier.testTag is accessible from UiAutomator for composables nested here.
LazyColumn(
modifier = Modifier.testTag("myLazyColumn")
){
// Content
}
}
هر ترکیبی با تگ Modifier.testTag(tag)
می تواند با استفاده از By.res(resourceName)
با استفاده از همان tag
resourceName
قابل دسترسی باشد.
val device = UiDevice.getInstance(getInstrumentation())
val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.
منابع اضافی
- آزمایش برنامه ها در اندروید : صفحه اصلی آزمایش اندروید نمای وسیع تری از اصول و تکنیک های آزمایش ارائه می دهد.
- اصول آزمایش : درباره مفاهیم اصلی آزمایش یک برنامه اندروید بیشتر بدانید.
- تست های محلی : می توانید برخی از آزمایش ها را به صورت محلی، در ایستگاه کاری خود اجرا کنید.
- تستهای ابزاری : اجرای تستهای ابزاری نیز تمرین خوبی است. یعنی تست هایی که مستقیماً روی دستگاه اجرا می شوند.
- ادغام مداوم : ادغام مداوم به شما امکان می دهد آزمایشات خود را در خط لوله استقرار خود ادغام کنید.
- اندازههای مختلف صفحه نمایش را آزمایش کنید : با دستگاههای زیادی که در دسترس کاربران است، باید اندازههای مختلف صفحه نمایش را آزمایش کنید.
- اسپرسو : در حالی که برای UI های مبتنی بر View در نظر گرفته شده است، دانش اسپرسو همچنان می تواند برای برخی از جنبه های تست Compose مفید باشد.