آغاز
Dependency(وابستگیها):
- Android SDK با ابزارها، افزونهها و APIهای Google برای آخرین سطح API نصب شدهاند.
متغیرهای محیط Android را تنظیم کنید:
export ANDROID_HOME=/path-to-sdk-root export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
این Repo را کلون(Clone) کرده و Fork کنید:
git clone git@github.com:username/robolectric.git
یک Feature Branch(شاخه امکان) برای ایجاد تغییرات خود ایجاد نمایید:
git checkout -b my-feature-name
تمام Android Dependencyهای مورد نیاز را به Local Maven Repository خود کپی نمایید:
./scripts/install-dependencies.rb
یک Full Build(بیلد کامل) از تمام Shadowها انجام دهید:
./gradlew clean assemble install compileTest
Robolectric در Mac و Linux توسعه مییابد. شما ممکن است قادر به کشف کردن نحوه کار با آن در ویندوز باشید.(اگر واقعا به دلایلی چنین چیزی میخواهید).
نیازمندیهای مشارکت
Code Style
اساسا IntelliJ به طور پیشفرض Java Style است، اما با دندانهگذاریهای(Indent) دو اسپیسی(Two-Space) و Importهای Google-Style.
- Space بزنید نه Tab.
- دندانهگذاری دو اسپیسی.
- برای همه چیز از آکولاد({}) استفاده کنید: if، else، و غیره.
- یک خط اسپیس میان متدها بگذارید.
- قبل از Instance یا متغیرهای استاتیک از پیشوند ‘m’ یا ‘s’ استفاده نکنید.
- Google Java Style را Import نمایید(فایل IntelliJ Style از اینجا)
نوشتن تستها
Robolectric یک Unit Testing Framework است و به همین دلیل اهمیت دارد که خود Robolectric به خوبی تست شده باشد. تمام کلاسها باید کلاسهای Unit Test داشته باشند. تمام متدهای Public باید تستهای Unit داشته باشند. این کلاسها و متدها باید وضعیتهای ممکن خود را تست کنند. درخواستهای(Request) بدون تست به فرستنده ارسال میشود.
مستندسازی
Robolectric از Markdown Doclet استفاده میکند، بنابراین javadoc را با استفاده از markdown و با javadoc tag extensionها بنویسید.
برای توسعهدهندگانی که Robolectric Chrome Extension نصب کردهاند، javadoc روی متدها و کلاسهای Robolectric shadow در قسمتهای developer.android.com برای کلاسها و متدهایی که آنها Shadow کردهاند درج(Insert) شده، و به عنوان Robolectric-related testing noteها شناخته میشوند. Javadoc قابل مشاهده است، به جز متدهای ‘Implementation@’ در کلاسهای Shadow که در یک قسمت ‘Testing APIs’ جدید برای Shadow Class نمایش داده میشوند.
قوانین ویژهای برای Javadoc روی کلاسهای Shadow وجود دارد تا Robolectric Chrome Extension پشتیبانی شود:
- تمام متدهای ‘Implementation@’ که متفاوت از رفتار استاندارد اندروید رفتار میکنند باید Javadocای داشته باشند که این تفاوت را توصیف کند. از ‘see@’ یا {‘link@’} استفاده نمایید تا نشان دهید که آیا رفتار متد میتواند تغییر کند، یا اینکه بوسیله فراخوانی تست متدهای API بررسی میشود. اگر رفتار متد مشابه رفتار عادی Framework باشد، هیچ Javadocای لازم نیست.
- تمام متدهای قابل مشاهده ‘non-‘@Implementation باید Javadoc توصیفی داشته باشند.
- Javadoc Commentها را به این صورت ننویسید(یم کامنت مثالی): “Shadow for whatever”. این JavaDoc در قسمتی که به صورت واضح به تست مرتبط است نمایش داده خواهد شد.
تمام قسمتهای آموزش Robolectric، به صورت دستهبندی شده از اینجا نیز در دسترس است.