وقتی کد به سختافزار فیزیکی وابسته باشد، خودکارسازی آزمایشها دشوار است. برای مثال، ممکن است لازم باشد دستگاه فیزیکی را بهصورت دستی متصل و قطع کنید تا وضعیت اتصال را درستیسنجی کنید. با درنظر گرفتن همه انواع مختلف، قابلیتها، و وضعیتهای دستگاه عینکهای صوتی و عینکهای نمایشگر، این چالش میتواند پیچیدهتر هم بشود. برای آزمایش این مجموعه متنوع از موارد، از میاناهای برنامهسازی کاربردی قانون آزمایش پیشبینیشده برای خودکارسازی راهاندازی و مدیریت محیط آزمایش پیشبینیشده استفاده کنید. این کتابخانه ایجاد دستگاه پیشبینیشده، وضعیتهای اتصال، و درستیسنجی قابلیت را مدیریت میکند، بنابراین میتوانید روی آزمایش منطق اصلی برنامهتان تمرکز کنید. از این میاناهای برنامهسازی کاربردی برای ساختن مجموعههای آزمایشی قدرتمند بدون نوشتن کد کلیشهای استفاده کنید.
افزودن وابستگیهای کتابخانه
برای استفاده از قانون آزمایش، عنصر آزمایشی را به فایل build.gradle
برنامهتان اضافه کنید:
شیک
dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}
کاتلین
dependencies {
// JXR Projected testing library
testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}
راهاندازی قانون آزمایش
برای راهاندازی قانون آزمایشی پایه، قانون را در کلاس آزمایشیتان نشانهگذاری کنید. بهطور پیشفرض، قانون دستگاه نمایشدادهشده را متصل میکند و قابلیتهای دیداری آن را قبلاز اجرای هر آزمایش فعال میکند.
@get:Rule val projectedTestRule = ProjectedTestRule() private val context: Context get() = ApplicationProvider.getApplicationContext() @Test fun testWithConnectedDevice() { val projectedContext = ProjectedContext.createProjectedDeviceContext(context) assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue() }
سناریوهای رایج دیگر را آزمایش کنید
اکنون که محیط آزمایش پیشبینیشده خود را با قانون آزمایش پایه راهاندازی کردهاید، سناریوهای رایج دیگر را برای عینکهای صوتی و عینکهای نمایشگر آزمایش کنید تا عملکرد برنامهتان را تأیید کنید.
آزمایش قطع اتصال دستگاه
برای آزمایش اینکه برنامه شما هنگام قطع شدن اتصال با عینک چه واکنشی نشان میدهد، از
دارایی isDeviceConnected استفاده کنید:
@Test fun testDeviceDisconnection() { // manually disconnect the device via the rule projectedTestRule.isDeviceConnected = false assertThrows(IllegalStateException::class.java) { ProjectedContext.createProjectedDeviceContext(context) } }
نکات کلیدی درباره کد
- این قانون ویژگیهایی مثل
isDeviceConnectedرا قبلاز هر آزمایشی به پیشفرضهایشان بازنشانی میکند. لازم نیست این داراییها را بهصورت دستی در@Afterروشها بازنشانی کنید.
قابلیتهای مختلف دستگاه را آزمایش کنید
عینکهای نمایشگر میتوانند میاناهای کاربر ساختهشده با Jetpack Compose Glimmer را نمایش دهند. بهطور پیشفرض،
ProjectedTestRule CAPABILITY_VISUAL_UI را فعال میکند. برای تعریف دقیق اینکه
دستگاه پخشکننده از چه چیزهایی پشتیبانی میکند، از capabilities مجموعه استفاده کنید. این کار برای
تأیید اینکه برنامه شما قبلاز تلاش برای
پخش محتوا در عینک، پشتیبانی سختافزاری را بهدرستی بررسی میکند مفید است.
@Test fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity -> // disable display capability projectedTestRule.capabilities = setOf() runBlocking { // create the controller val controller = ProjectedDeviceController.create(activity) // verify the app recognizes the lack of visual UI support assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI) } }
نکات کلیدی درباره کد
- این قانون ویژگیهایی مثل
capabilitiesرا قبلاز هر آزمایشی به پیشفرضهایشان بازنشانی میکند. لازم نیست این داراییها را بهصورت دستی در@Afterروشها بازنشانی کنید. - وقتی نیاز دارید رفتار را بهطور خاص برای فعالیتی که
برای نمایش در عینک پیشبینی شده است درستیسنجی کنید، از
launchTestProjectedDeviceActivityاستفاده کنید.