Robolectric هو إطار عمل اختبار الوحدة المتوافق مع معايير الصناعة لنظام Android. باستخدام Robolectric، يتم تشغيل اختباراتك في بيئة Android محاكاة داخل JVM، دون تحمل أي عبء أو ضعف في المحاكي. تعمل الاختبارات الكهربائية الآلية بشكل روتيني بشكل أسرع بـ 10 مرات من الاختبارات التي يتم إجراؤها على المحاكيات الباردة.
يدعم Robolectric تشغيل اختبارات الوحدة لـ 15 إصدارًا مختلفًا من Android، بدءًا من Lollipop (مستوى واجهة برمجة التطبيقات 21) إلى V (مستوى واجهة برمجة التطبيقات 35).
فيما يلي مثال لاختبار بسيط مكتوب باستخدام Robolectric:
@ RunWith ( AndroidJUnit4 . class )
public class MyActivityTest {
@ Test
public void clickingButton_shouldChangeResultsViewText () {
Activity activity = Robolectric . setupActivity ( MyActivity . class );
Button button = ( Button ) activity . findViewById ( R . id . press_me_button );
TextView results = ( TextView ) activity . findViewById ( R . id . results_text_view );
button . performClick ();
assertThat ( results . getText (). toString (), equalTo ( "Testing Android Rocks!" ));
}
}
لمزيد من المعلومات حول كيفية تثبيت واستخدام Robolectric في مشروعك، وتوسيع وظائفه، والانضمام إلى مجتمع المساهمين، يرجى زيارة robolectric.org.
إذا كنت ترغب في بدء مشروع جديد باستخدام اختبارات Robolectric، فيمكنك الرجوع إلى deckard
(لـ Maven أو Gradle) كدليل لإعداد كل من Android وRobolectric على جهازك.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
تم تصميم Robolectric باستخدام Gradle. يمكن لكل من Android Studio وIntelliJ استيراد ملف build.gradle.kts
عالي المستوى وسيقومان تلقائيًا بإنشاء ملفات المشروع الخاصة بهما منه.
لتشغيل Robolectric على جهازك، راجع هذا الدليل.
للحصول على نظرة عامة عالية المستوى حول بنية Robolectric، قم بزيارة robolectric.org.
تم تطوير Robolectric بنشاط في عدة مواقع. الموقع الأساسي هو مستودع GitHub، والذي يعتبر مصدر الحقيقة لكود Robolectric. إنه المكان الذي تحدث فيه المساهمات من مجتمع مطوري Android الأوسع. هناك أيضًا شجرة تطوير نشطة لـ Robolectric داخليًا في Google، حيث تتم المساهمات من مطوري Android من الطرف الأول. من خلال وجود شجرة تطوير لـ Robolectric داخليًا في Google، فإنها تمكن مطوري Android من الطرف الأول من تقديم مساهمات إلى Robolectric بشكل أكثر كفاءة. تتم مزامنة هذه الشجرة مباشرة مع فرع google
في كل مرة يحدث فيها تغيير باستخدام أداة مزامنة كود Copybara
. تحدث عمليات الدمج ثنائية الاتجاه لهذا الفرع والفرع master
بانتظام.
لدى Robolectric أيضًا استخدام في نظام Android الأساسي عبر مشروع الريبو الخارجي/robolectric. عادةً ما ترتبط المساهمات في شجرة المصدر هذه بدعم SDK الجديد وواجهات برمجة تطبيقات النظام الأساسي المتطورة. يتم نقل التغييرات من هذا الفرع إلى شجرة Robolectric الداخلية في Google، والتي تنتشر في النهاية إلى فروع GitHub.
على الرغم من تعقيده، إلا أن نموذج التطوير الموزع هذا يمكّن مطوري Android في بيئات مختلفة من استخدام Robolectric والمساهمة فيه، مع السماح للتغييرات بشق طريقها في النهاية إلى إصدارات Robolectric العامة.
إذا كنت ترغب في العيش على حافة النزيف، يمكنك محاولة الركض ضد إنشاء لقطة. ضع في اعتبارك أن اللقطات تمثل أحدث التغييرات في master
وقد تحتوي على أخطاء.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}