Shadowهای Customize شده Robolectric یک محصول و کار در حال پیشرفت است و طراحان آن اعتقاد دارند، به همه کسانی که تمایل به مشارکت در مجموعه طراحان Robolectric و رفع باگها و شکافهای موجود در این ابزار دارند، خوش آمد گفته و آنها را برای این همکاری تشویق مینماید. با این حال، اگر افرادی میخواهند رفتار Shadow را به گونهای …
ادامه نوشته »Robolectric
آموزش Robolectric-قسمت چهاردهم: Shadowها(بخش اول)
Robolectric با ایجاد یک محیط Runtime که شامل کد واقعی Android Framework است، کار میکند. این بدین معنیست که وقتی تستهای شما یا کد تحت تست در Android Framework فراخوانی میشود، یک تجربه واقعگرایانه بدست میآورید، چرا که در اکثر موارد همان کد اجرا میشود؛ همانطور که در یک دستگاه واقعی چنین اتفاقی میافتد. با این وجود محدودیتهایی هم وجود دارد: …
ادامه نوشته »آموزش Robolectric-قسمت سیزدهم: راهنمای مشارکت کننده
آغاز Dependency(وابستگیها): Android SDK با ابزارها، افزونهها و APIهای Google برای آخرین سطح API نصب شدهاند. متغیرهای محیط Android را تنظیم کنید: این Repo را کلون(Clone) کرده و Fork کنید: یک Feature Branch(شاخه امکان) برای ایجاد تغییرات خود ایجاد نمایید: تمام Android Dependencyهای مورد نیاز را به Local Maven Repository خود کپی نمایید: یک Full Build(بیلد کامل) از تمام Shadowها انجام …
ادامه نوشته »آموزش Robolectric-قسمت دوازدهم: سفارشیسازی Test Runner
شرایط مختلفی وجود دارد که شما تمایل دارید تا Robolectric Test Runner را سفارشیسازی(Customize) نمایید تا بدین ترتیب قبل از اینکه همه تستها و یا حتی قبل از اینکه هر Test Method اجرا شود، برخی عملیاتها را انجام دهید. یک مثال خوب برای این موضوع مقداردهی اولیه(Initialize) برای Dependency Injection Framework با مجموعهای از Dependencyهای مختلف برای تست شماست. خوشبختانه Robolectric …
ادامه نوشته »آموزش Robolectric-قسمت یازدهم: یکپارچهسازی Build System
با آغاز به کار Robolectric 3.3، این Test Runner روی Classpath به دنبال فایلی با نام ‘com/android/tools/test_config.properties/’ خواهد گشت. اگر فایل مربوطه را پیدا کرد، برای آمادهسازی Manifest، Resource، و Asset Locationهای تست استفاده میشود؛ و البته این بدون نیاز به تعیین در تستهای شما به یکی از دو شکل زیر است: ‘@Config(constants=BuildConfig.class)’ ‘@Config(manifest=”…”, res=”…”, assets=”…”)’ این به پیادهسازان Build …
ادامه نوشته »آموزش Robolectric-قسمت دهم: Best Practiceها
۱- روی کلاسهای Android که توسط دیگر کدهای Android عمل میکنند(مانند ‘Context’، ‘SharedPreferences’ و غیره) Mock یا Spy نکنید. Stub کردن(Stubbing ) بسیار شکننده است و میتواند منجر به شکست در ارتقاء Robolectric یا پلتفرم Android شود. استثنائات کوچک این قانون، کلاسهایی با پاسخگویی بسیار محدود مانند Event Listenerها هستند. ۲- Layout Inflation را در تست Robolectric خود تست نموده …
ادامه نوشته »آموزش Robolectric-قسمت نهم: استفاده از Add-on Moduleها
به منظور کاهش تعداد وابستگیهای خارجی روی اپلیکیشن در حال تست، shadows در Robolectric به Add-on Packageهای مختلف تقسیم میشود. shadows فقط برای کلاسهای فراهم شده در base Android SDK بوسیله Main Robolectric Module ارائه شده است. shadows تکمیلی برای چیزهایی مانند appcompat یا Support Library توسط Add-on Moduleها ارائه شده است. جدول زیر Add-on Shadow Packageهای موجود را لیست میکند: …
ادامه نوشته »آموزش Robolectric-قسمت هشتم: Drive کردن چرخه حیات Activity
قبل از Robolectric 2.2، اکثر تستها، Activityها را مستقیما با فراخوانی Constructorها، (()new MyActivity) و سپس فراخوانی دستی متدهای Lifecycle از قبیل ‘()onCreate'” ایجاد میکردند. همچنین به طور گستردهای از مجموعهای از متدها در ‘ShadowActivity’ (به عنوان مثال ‘()ShadowActivity.callOnCreate’) استفاده میشد، که برای ‘ActivityController’ به نوعی Precursor بودند. ‘ActivityController’ یک Robolectric API است که تمام این موضوعات را تغییر میدهد. هدف آن …
ادامه نوشته »آموزش Robolectric-قسمت هفتم: استفاده از Qualified Resourceها
همانطور که در Android Developer Doc توضیح داده شده است، Resource Qualifierها به شما اجازه میدهند تا چگونگی بارگذاری Resourceهای خود را بر اساس فاکتورهایی از قبیل زبان روی دستگاه، سایز صفحه، و اینکه روز است یا شب تغییر دهید. علیرغم اینکه این تغییرات اغلب برای تست دقیق خستهکننده هستند(هر رشته برای تمام زبانها تمام پشتیبانی شده یک ترجمه دارد)، …
ادامه نوشته »آموزش Robolectric-قسمت ششم: پیکربندی دستگاه(Device)
Robolectric شبیهسازی انواع مختلف پیکربندی Device را ساده میکند. به طور خاص، Propertyهایی که کلاس ‘android.content.res.Configuration’ را تشکیل میدهند میتوانند همانطور که در اینجا توضیح داده شده است در متد تست، کلاس تست، بسته یا سطح Siute، مشخص شوند. تنظیم پیکربندی دستگاه پیکربندی دستگاه Android را میتوان با استفاده از Property ویژه Config به نام ‘qualifiers’ مشخص کرد: از نسخه ۳٫۶، …
ادامه نوشته »