۱- روی کلاسهای 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، به صورت دستهبندی شده از اینجا نیز در دسترس است.