ابزار Espresso Test Recorder به شما امکان میدهد بدون نوشتن هیچ کد آزمایشی، تستهای رابط کاربری برای برنامه خود ایجاد کنید. با ضبط یک سناریوی تست، میتوانید تعاملات خود را با یک دستگاه ضبط کنید و برای تأیید عناصر رابط کاربری در اسنپشاتهای خاص از برنامه خود، دستوراتی (assertions) اضافه کنید. سپس Espresso Test Recorder ضبط ذخیره شده را میگیرد و به طور خودکار یک تست رابط کاربری مربوطه را تولید میکند که میتوانید برای آزمایش برنامه خود اجرا کنید.
Espresso Test Recorder تستها را بر اساس چارچوب Espresso Testing ، یک API در AndroidX Test، مینویسد. Espresso API شما را تشویق میکند تا تستهای رابط کاربری مختصر و قابل اعتمادی را بر اساس اقدامات کاربر ایجاد کنید. این ساختار با بیان انتظارات، تعاملات و اظهارات بدون دسترسی مستقیم به فعالیتها و نماهای برنامه اصلی، از پوسته پوسته شدن تست جلوگیری کرده و سرعت اجرای تست را بهینه میکند.
انیمیشنها را در دستگاه آزمایشی خود خاموش کنید
قبل از استفاده از Espresso Test Recorder، مطمئن شوید که انیمیشنهای دستگاه تست خود را خاموش کردهاید تا از نتایج غیرمنتظره جلوگیری شود. دستورالعملهای راهاندازی Espresso را دنبال کنید، اما توجه داشته باشید که نیازی نیست به صورت دستی یک مرجع وابستگی به کتابخانه Espresso تنظیم کنید زیرا Test Recorder این کار را به طور خودکار هنگام ذخیره یک ضبط انجام میدهد. این مراحل فقط باید یک بار برای یک پروژه خاص انجام شوند.
تست اسپرسو را ثبت کنید
تستهای Espresso از دو جزء اصلی تشکیل شدهاند: تعاملات رابط کاربری و اظهارات (assertions) روی عناصر View. تعاملات رابط کاربری شامل اقدامات ضربه زدن و تایپ است که یک فرد ممکن است برای تعامل با برنامه شما از آنها استفاده کند. اظهارات (assertions) وجود یا محتوای عناصر بصری روی صفحه را تأیید میکنند. به عنوان مثال، یک تست Espresso برای برنامه تست Notes ممکن است شامل تعاملات رابط کاربری برای کلیک روی یک دکمه و نوشتن یک یادداشت جدید باشد، اما از اظهارات (assertions) برای تأیید وجود دکمه و محتوای یادداشت استفاده میکند.
این بخش به نحوه ایجاد هر دوی این اجزای تست با استفاده از Espresso Test Recorder و همچنین نحوه ذخیره ضبط نهایی برای تولید تست میپردازد.
تعاملات رابط کاربری را ضبط کنید
برای شروع ضبط تست با Espresso Test Recorder، مراحل زیر را دنبال کنید:
- روی اجرا > ضبط تست اسپرسو کلیک کنید.
- در پنجره Select Deployment Target ، دستگاهی را که میخواهید تست روی آن ضبط شود، انتخاب کنید. در صورت لزوم، یک دستگاه مجازی اندروید جدید ایجاد کنید . روی تأیید کلیک کنید.
- ضبطکننده تست اسپرسو (Espresso Test Recorder) باعث ایجاد یک نسخه از پروژه شما میشود و برنامه باید نصب و اجرا شود تا ضبطکننده تست اسپرسو به شما اجازه تعامل با آن را بدهد. پنجره ضبط تست شما (Record Your Test) پس از راهاندازی برنامه ظاهر میشود و از آنجایی که هنوز با دستگاه تعاملی نداشتهاید، در پنل اصلی عبارت «هنوز هیچ رویدادی ثبت نشده است» نمایش داده میشود. برای شروع ثبت رویدادهایی مانند اقدامات «ضربه زدن» و «تایپ»، با دستگاه خود تعامل کنید.
توجه : قبل از اینکه بتوانید ثبت تعاملات را شروع کنید، ممکن است کادر محاورهای روی دستگاه خود با عنوان «در حال انتظار برای اشکالزدا» یا «در حال اتصال اشکالزدا» مشاهده کنید. Espresso Test Recorder از اشکالزدا برای ثبت رویدادهای رابط کاربری استفاده میکند. وقتی اشکالزدا متصل میشود، کادر محاورهای به طور خودکار بسته میشود؛ دکمهی بستن اجباری را نزنید.
تعاملات ضبطشده در پنل اصلی پنجرهی «ضبط تست شما» (Record Your Test) نمایش داده میشوند، همانطور که در شکل ۱ در زیر نشان داده شده است. هنگام اجرای تست، تست Espresso سعی میکند این اقدامات را به همان ترتیب اجرا کند.

شکل ۱. پنجرهی «ثبت آزمایش شما» به همراه تعاملات رابط کاربری ثبتشده.
برای تأیید عناصر رابط کاربری، اظهارات (assertions) اضافه کنید
ادعاها (Assertions) وجود یا محتوای یک عنصر View را از طریق سه نوع اصلی تأیید میکنند:
- متن عبارت است از : محتوای متن عنصر نمای انتخاب شده را بررسی میکند.
- exists : بررسی میکند که عنصر View در سلسله مراتب View فعلی قابل مشاهده روی صفحه وجود دارد یا خیر.
- doesn’t exist : بررسی میکند که عنصر View در سلسله مراتب View فعلی وجود ندارد.
برای اضافه کردن یک assertion به تست خود، به صورت زیر عمل کنید:
- روی افزودن ادعا کلیک کنید. یک کادر محاورهای ضبط صفحه نمایش ظاهر میشود در حالی که Espresso سلسله مراتب رابط کاربری و سایر اطلاعات مربوط به وضعیت فعلی برنامه را دریافت میکند. این کادر محاورهای به محض اینکه Espresso از صفحه عکس گرفت، به طور خودکار بسته میشود.
- طرحی از صفحه فعلی در پنلی در سمت راست پنجره «ثبت آزمون شما » ظاهر میشود. برای انتخاب یک عنصر View که میخواهید روی آن یک assertion ایجاد کنید، روی عنصر موجود در تصویر کلیک کنید یا از اولین منوی کشویی در کادر «ویرایش assertion» در پایین پنجره استفاده کنید. شیء View انتخاب شده با یک کادر قرمز برجسته میشود.
- از منوی کشویی دوم در کادر ویرایش ادعا، ادعایی را که میخواهید استفاده کنید، انتخاب کنید. اسپرسو منو را با ادعاهای معتبر برای عنصر نمای انتخاب شده پر میکند.
- اگر عبارت «text is» را انتخاب کنید، Espresso به طور خودکار متن فعلی را درون عنصر View انتخاب شده وارد میکند. میتوانید متن را برای مطابقت با عبارت مورد نظر خود با استفاده از فیلد متن در کادر Edit assertion ویرایش کنید.
- برای ایجاد یک assertion دیگر ، روی ذخیره و افزودن دیگری کلیک کنید یا برای بستن پنلهای assertion، روی ذخیره Assertion کلیک کنید.
تصویر موجود در شکل ۲ نشان میدهد که یک عبارت «text is» ایجاد میشود تا تأیید شود که عنوان یادداشت «Happy Testing!» است:

شکل ۲. کادر تأیید ویرایش پس از انتخاب یک عنصر View (به رنگ قرمز).
هنگام ایجاد یک assertion، میتوانید به تعامل با برنامه خود ادامه دهید، حتی اگر پنلهای assertion هنوز در پنجره Record Your Test باز باشند. Espresso Test Recorder به ثبت اقدامات شما ادامه میدهد، اما assertion ای که ویرایش میکنید پس از ذخیره شدن، قبل از این تعاملات ظاهر میشود. تصویر صفحه assertion همچنین طرحبندی دستگاه یا شبیهساز را در زمانی که دکمه Add Assertion را فشار میدهید، حفظ میکند.
ذخیره یک ضبط
پس از اتمام تعامل با برنامه و اضافه کردن assertionها، از مراحل زیر برای ذخیره ضبط خود و تولید تست Espresso استفاده کنید:
- روی «ضبط کامل» کلیک کنید. پنجره «انتخاب نام کلاس آزمون برای آزمون شما» ظاهر میشود.
- Espresso Test Recorder بر اساس نام اکتیویتی اجرا شده، در بسته خود به تست شما یک نام منحصر به فرد میدهد. اگر میخواهید نام پیشنهادی را تغییر دهید، از فیلد متنی Test class name استفاده کنید. روی ذخیره کلیک کنید.
- اگر وابستگیهای Espresso را به برنامه خود اضافه نکردهاید، هنگام تلاش برای ذخیره تست خود، کادر محاورهای Missing Espresso dependencies ظاهر میشود. برای اضافه شدن خودکار وابستگیها به فایل
build.gradleروی Yes کلیک کنید.
- اگر وابستگیهای Espresso را به برنامه خود اضافه نکردهاید، هنگام تلاش برای ذخیره تست خود، کادر محاورهای Missing Espresso dependencies ظاهر میشود. برای اضافه شدن خودکار وابستگیها به فایل
- این فایل پس از تولید توسط Espresso Test Recorder به طور خودکار باز میشود و اندروید استودیو کلاس تست را به صورت انتخاب شده در پنجره Project IDE نشان میدهد.
- محل ذخیره تست به محل ریشه تست instrumentation شما و همچنین نام بسته activity اجرا شده بستگی دارد. برای مثال، تستهای مربوط به برنامه تست Notes در پوشه src > androidTest > java > com.example.username.appname ماژول برنامه که تست را روی آن ضبط کردهاید، ذخیره میشوند.
یک تست اسپرسو را به صورت محلی اجرا کنید
برای اجرای تست اسپرسو، از پروژه استفاده کنید
پنجرهای که در سمت چپ محیط توسعه اندروید استودیو قرار دارد:
- پوشه ماژول برنامه مورد نظر را باز کنید و به آزمایشی که میخواهید اجرا کنید بروید. محل آزمایش به محل ریشه تست instrumentation شما و نام بسته activity اجرا شده بستگی دارد. مثالهای زیر نشان میدهند که یک آزمایش برای برنامه تست Notes کجا ذخیره میشود:
- اگر از نمای اندروید در پنجره استفاده میکنید، به java > com.example.username.appname (androidTest) بروید.
- اگر از نمای پروژه (Project view) در داخل پنجره استفاده میکنید، در پوشه ماژول به مسیر src > androidTest > java > com.example.username.appname بروید.
- روی تست کلیک راست کرده و گزینه Run 'testName' را انتخاب کنید.
- روش دیگر این است که فایل تست را باز کنید و روی کلاس یا متد تست تولید شده کلیک راست کنید. برای اطلاعات بیشتر در مورد نحوه اجرای تستها، به صفحه Test Your App مراجعه کنید.
- در پنجره Select Deployment Target ، دستگاهی را که میخواهید تست روی آن اجرا شود انتخاب کنید. در صورت لزوم، یک دستگاه مجازی اندروید جدید ایجاد کنید . روی تأیید کلیک کنید.
پیشرفت تست خود را در پنجره Run در پایین IDE نظارت کنید. اندروید استودیو یک نسخه کامل از پروژه شما را اجرا میکند و همانطور که در شکل 3 نشان داده شده است، یک برگه با نام تست شما در پنجره Run باز میکند. میتوانید در این برگه بررسی کنید که آیا تست شما با موفقیت انجام شده است یا خیر، و همچنین مدت زمان اجرای تست را نیز مشاهده کنید. پس از اتمام تست، برگه عبارت "Tests run to completion" را ثبت خواهد کرد.

شکل ۳. نمونه خروجی در پنجره Run پس از اجرای تست Espresso به صورت محلی.
برای کسب اطلاعات بیشتر در مورد نوشتن پیکربندیهای اجرای آزمایشی، بخش «تعریف پیکربندی آزمایشی برای یک کلاس یا متد» را در بخش «ایجاد و ویرایش پیکربندیهای اجرا/اشکالزدایی » مطالعه کنید.
اجرای تست Espresso با Firebase Test Lab برای اندروید
شما میتوانید از تستهای تولید شده توسط Espresso Test Recorder به همراه Firebase Test Lab برای تست برنامه خود در فضای ابری روی صدها پیکربندی دستگاه استفاده کنید. تست برنامه شما با Test Lab در محدوده سهمیه روزانه رایگان طرح Spark ، هیچ هزینهای ندارد. برای اجرای تستهای Espresso با Firebase Test Lab، یک پروژه Firebase برای برنامه خود ایجاد کنید و سپس دستورالعملهای اجرای تستهای خود را با Firebase Test Lab از اندروید استودیو دنبال کنید.

شکل ۴. نمونه خروجی در پنجره Run پس از اجرای تست با Firebase Test Lab روی چندین دستگاه.