سؤال

أنا أكتب مشروع مكتبة Android يتصاعد على فئة Android Bitmap (نسميها Androindlib) الذي يحتوي على فئة فائدة فقط (بدون نشاط). حاولت اختباره باستخدام Android Junit ، لكنه يستمر في الشكوى التي لا يمكن العثور على anroidlib.apk

ما هي الطريقة الصحيحة لاختبار وحدة مكتبة Android؟

هل كانت مفيدة؟

المحلول

اقتباس وثائق:

"هناك طريقتان موصىانان بإعداد الاختبار على الكود والموارد في مشروع المكتبة:

  • يمكنك إعداد مشروع اختبار يدين مشروع تطبيق يعتمد على مشروع المكتبة. يمكنك بعد ذلك إضافة اختبارات إلى المشروع للحصول على ميزات خاصة بالمكتبة.

  • يمكنك إعداد مشروع تطبيق قياسي يعتمد على المكتبة ووضع الأجهزة في هذا المشروع. يتيح لك ذلك إنشاء مشروع قائمة بذاته يحتوي على كل من الاختبارات/الأجهزة والرمز للاختبار ".

نصائح أخرى

في مشروع الاختبار الخاص بك ، قم ببساطة بتغيير اسم الحزمة بحيث يكون نفس حزمة مكتبتك. على سبيل المثال ، لديك مكتبة حزمتها "com.example.lib". إنشاء مشروع اختبار يستهدف مكتبتك. في ملف البيان سترى package="com.example.lib.test", ، و targetPackage="com.example.lib". فقط قم بتغيير الحزمة من "com.example.lib.test" إلى "com.example.lib" (targetPackage اتركه كما هو).

تأكد أيضًا من الإشارة إلى المكتبة إلى مشروع الاختبار الخاص بك ليس في مسار بناء Java ، ولكن كمكتبة Android المعتادة: في Eclipse يجب أن تظهر كمكتبة في Project->Properties->Android علامة التبويب ، ولكن ليس في Project->Properties->Java Build Path التبويب.

ثم قم بتشغيل الاختبارات.

http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ يساعد في وصف العملية اللازمة لتنفيذ الاقتراح الثاني في إجابة Commonsware

لكل توثيق:

اختبار وحدة المكتبة هو نفسه اختبار التطبيق. الفرق الرئيسي هو أن المكتبة وتبعياتها يتم تضمينها تلقائيًا كتبعيات للاختبار APK. هذا يعني أن اختبار APK لا يتضمن فقط رمزه الخاص ، ولكن أيضًا AAR للمكتبة وجميع تبعياتها. نظرًا لعدم وجود "تطبيق تحت الاختبار" ، تقوم مهمة AndroidTest بتثبيت (وإلغاء تثبيط) فقط اختبار APK. عند دمج ملفات متعددة ، يتبع Gradle ترتيب الأولوية الافتراضية ويدمج بيان المكتبة في البيان الرئيسي لـ APK.

ملاحظة: يعتمد هذا الحل على استخدام Eclipse Indigo (3.8.2) وقد يتعين تنفيذه بشكل مختلف قليلاً عن IDE آخر على الرغم من أن المبادئ الأساسية ستكون هي نفسها.

واجهت مشكلات مماثلة ووجدت أن ما يلي يعمل دائمًا:

(ملاحظة: هذه التعليمات مخصصة لبناء مجموعة مشروع جديدة من نقطة الصفر. إذا كنت قد قمت بالفعل ببناء أجزاء من مجموعة المشروع ، فقد تضطر إلى تعديل مشاريعك حتى تتصل بنفس الطريقة.)

  1. قم بإنشاء مشروع جديد لمكتبة Android عن طريق التحقق من خانة الاختيار "IS Library" أثناء الإنشاء. (على سبيل المثال مشروع Android يسمى "Remingtonandroidtools").
  2. قم بإنشاء مشروع مكتبة Android وتحقق من أنه قام بإنشاء ملف JAR في مجلد BIN. (على سبيل المثال ملف جرة اسمه "Remingtonandroidtools.jar".).
  3. قم بإنشاء مشروع Android فارغ لاختبار تطبيق Android الذي سيكون بمثابة تطبيق اختبار Android. (على سبيل المثال مشروع Android يسمى "RemingtonandroidToolstestApp"). لن تحتاج إلى تعديل التعليمات البرمجية المصدر أو موارد مشروع تطبيق Android ما لم يكن لديك شيء يجب إضافته للاختبار. يمكن اختبار العديد من الأشياء دون أي تعديلات على مشروع تطبيق Android. مشروع تطبيق Android Test هو جسر بين مشروع مكتبة Android الخاص بك ومشروع Android Junit الذي يجعل اختبار مشروع مكتبة Android عبر Android Junit ممكنًا.
  4. اذهب إلى علامة تبويب المكتبة لمسار بناء Java لمشروع تطبيق Android ("RemingtonandroidToolstestapp" في هذا المثال).
  5. أضف ملف JAR ("Remingtonandroidtools.jar" في هذا المثال) لمشروع مكتبة Android ("Remingtonandroidtools" في هذا المثال) عبر زر "إضافة الجرار ...".
  6. قم بإنشاء مشروع اختبار Android جديد (على سبيل المثال "RemingtonandroidToolstester") سيكون بمثابة اختبار مكتبة Android وتحديد مشروع تطبيق Android ("RemingtonandroidToolstestapp" في هذا المثال) كهدف.
  7. اذهب إلى علامة تبويب المكتبة لمسار Build Java لمشروع Android Library Tester ("Remingtonandroidtoolstester" في هذا المثال).
  8. أضف ملف JAR ("Remingtonandroidtools.jar" في هذا المثال) لمشروع مكتبة Android ("Remingtonandroidtools" في هذا المثال) عبر زر "إضافة الجرار ...".
  9. ابحث عن المجلد الأخير من حزمة Android الخاصة بك في مشروع اختبار مكتبة Android ("danny.remington.remington_android_tools_test_app.test" على سبيل المثال) وأضف فئة اختبار ("MainActivityTest" على سبيل المثال) التي ترث من ActivityInstrumentationTestCase2.
  10. قم بتحرير فئة الاختبار ("TestActivityTest" في هذا المثال) لاستخدام النشاط (على سبيل المثال "TestActivity") لتطبيق Android ("RemingtonandroidToolStestApp" في هذا المثال) كمعلمة لـ ActivityInstrumentationTestCase2.
  11. قم بتحرير فئة الاختبار ("TestActivityTest" في هذا المثال) وإنشاء مُنشئ افتراضي يقوم بإجراء مكالمة إلى Super (Class) وتمرير فئة تطبيق Android ("testactivity.class" على سبيل المثال).

يجب أن ينتهي بك الأمر بثلاثة مشاريع (مكتبة Android ، تطبيق Android Test ، Android Library Tester) التي تشبه هذا:

enter image description here

enter image description here

enter image description here

يجب أن ينتهي بك المطاف بفصل لاختبار مكتبة Android التي تشبه هذا:

package danny.remington.remington_android_tools_test_app.test;

import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;

/**
 * 
 */
public class TestActivityTest extends
      ActivityInstrumentationTestCase2<TestActivity> {

   public TestActivityTest() {
      super(TestActivity.class);
   }

}

يمكنك بعد ذلك إضافة أي اختبار تريده. لن تحتاج إلى الرجوع إلى تطبيق Android Test ("RemingTonandroidToolStestApp" في هذا المثال) لتشغيل الاختبارات الخاصة بك ما لم تكن تتطلب الوصول إلى مكون معين من Android (مثل مجلد الأصول ، على سبيل المثال). إذا كنت بحاجة إلى الوصول إلى أي مكونات معينة من Android ، فيمكنك القيام بذلك عن طريق تعديل تطبيق Android Test ("RemingtonandroidToolStestApp" في هذا المثال) ثم الرجوع إليها عبر الأجهزة التي توفرها API Android Junit. (يمكنك قراءة المزيد عن هذا الموضوع هنا: http://developer.android.com/tools/testing/testing_android.html)

إذا كانت فئات Ulitiy لا تعتمد على أي رمز معين من Android ، فيمكنك فقط استخدام اختبارات وحدة Junit القياسية. لا حاجة لاستخدام إصدارات Android.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top