یکشنبه , ۹ اردیبهشت ۱۴۰۳

آموزش Robolectric-قسمت دهم: Best Practiceها

Robolectric Tool
Robolectric Tool

۱- روی کلاسهای Android که توسط دیگر کدهای Android عمل می‌کنند(مانند ‘Context’، ‘SharedPreferences’ و غیره) Mock یا Spy نکنید. Stub کردن(Stubbing ) بسیار شکننده است و می‌تواند منجر به شکست در ارتقاء Robolectric یا پلتفرم Android شود. استثنائات کوچک این قانون، کلاس‌هایی با پاسخگویی بسیار محدود مانند Event Listenerها هستند.

۲- Layout Inflation را در تست Robolectric خود تست نموده و اطمینان حاصل نمایید که Click Listenerها درست تنظیم شده‌اند. این کار را بوسیله تست کردن مستقیم تعامل ‘Activity’ و ‘Layout’ به جای Mock کردن ‘LayoutInflater’ یا ارائه یک Abstraction فرارتر  از View انجام دهید.

۳- هنگام تست کردن کامپوننت‌های Android مانند ‘Activities’ و ‘Services’ به جای استفاده از متدهای ‘VisibleForTesting@’ از Public Lifecycle APIها استفاده کنید(به عنوان نمونه: ‘()Robolectric.buildActivity’). فراخوانی مستقیم این متدها، Refactor آتیِ کد تحت تست را سخت می‌کند.

۴- تعداد Threadهایی که طی هر تست اجرا می‌شوند را محدود کنید. Threadهای سرکش اغلب باعث به هم ریختگی و آلودگی تست می‌شوند زیرا به طور خودکار در میان تست‌ها Clean up نشده‌اند. اغلب Threadها هنگام استفاده از Libraryهای ثالث(به عنوان مثال برای شبکه) و یا کامپوننت‌های پردازش Background به طور ناخواسته بوجود می‌آیند. یکی از منابع اصلی Threadهای اضافی در حین تست، “ExecutorServices” است که Thread Poolها را نگهداری می‌کند. در صورت امکان، کامپوننت‌های وابسته‌ای که Threadها را تکثیر می‌کنند را Mock کرده و یا از ‘DirectExecutor’ استفاده کنید. اگر نیاز شد که چندین Thread را در حین تست اجرا کنید، حتما مطمئن شوید که صراحتا تمام Threadها و “ExecutorServices” به منظور اجتناب از آلودگی در تست، متوقف شده‌اند.

تمام قسمت‌های آموزش Robolectric، به صورت دسته‌بندی شده از اینجا نیز در دسترس است.

ابوالفضل خواجه دیزجی

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *