تست های ابزار دقیق

ابتدا برنامه خود را در developer.android.com بخوانید. توجه داشته باشید که تفاوت هایی در نحوه استفاده از تست های ابزار دقیق در تست پلت فرم وجود دارد.

به طور خلاصه، یک تست ابزار دقیق، یک محیط اجرای آزمون ویژه را فراهم می کند که از طریق دستور am instrument راه اندازی می شود، جایی که فرآیند برنامه هدفمند مجدداً راه اندازی می شود و با زمینه برنامه اصلی شروع می شود، و یک رشته ابزار دقیق در داخل فرآیند برنامه کاربردی VM شروع می شود. کد آزمایشی شما اجرا را در این رشته ابزار دقیق شروع می کند و با یک نمونه Instrumentation ارائه می شود که دسترسی به زمینه برنامه و API ها را برای دستکاری فرآیند برنامه تحت آزمایش فراهم می کند.

مفاهیم کلیدی

  • یک ابزار دقیق باید در یک بسته برنامه اعلام شود، با یک تگ <instrumentation> که در زیر تگ <manifest> مانیفست بسته برنامه قرار دارد.
  • مانیفست بسته برنامه از نظر فنی ممکن است حاوی چندین تگ <instrumentation> باشد، اگرچه معمولاً در این روش استفاده نمی شود.
  • هر <instrumentation> باید شامل موارد زیر باشد:
    • یک ویژگی android:name : باید نام یک زیر کلاس از Instrumentation باشد که در برنامه آزمایشی گنجانده شده است، که معمولاً اجرای آزمایشی مورد استفاده است، به عنوان مثال: android.support.test.runner.AndroidJUnitRunner
    • یک ویژگی android:targetPackage باید تعریف شود. مقدار آن باید روی بسته برنامه تحت آزمایش تنظیم شود.

خلاصه مراحل

  1. در زیر مقاصد متداول برای تست‌های هرمتیک در برابر سرویس‌های چارچوب آمده است:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    اگر در حال اضافه کردن یک ماژول ابزار دقیق جدید برای قطعه خود هستید، ببینید

  2. اگر در حال اضافه کردن تست به یکی از مکان‌های بالا هستید، از کنوانسیون موجود پیروی کنید. اگر در حال راه‌اندازی یک ماژول آزمایشی جدید هستید، لطفاً تنظیمات AndroidManifest.xml و Android.mk را در یکی از مکان‌های بالا دنبال کنید.

  3. به عنوان مثال به frames/base/core/tests/coretests/ مراجعه کنید. توجه داشته باشید که این خطوط برنامه های اضافی را نصب می کنند:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. فراموش نکنید که تست خود را به عنوان @SmallTest ، @MediumTest یا @LargeTest علامت گذاری کنید.

  5. ماژول تست را با m بسازید، به عنوان مثال:

    m FrameworksCoreTests
    
  6. تست ها را اجرا کنید:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. اگر از Tradefed استفاده نمی کنید، تست ها را به صورت دستی نصب و اجرا کنید:

    1. apk تولید شده را نصب کنید:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. تست ها را با گزینه های مختلف اجرا کنید:

      1. تمام تست ها در apk

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. همه تست ها تحت یک بسته جاوا خاص

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. تمام تست ها تحت یک کلاس خاص

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. یک روش تست خاص

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

آزمون شما می تواند با استفاده از API های JUnit یک ادعای صریح در مورد قبولی یا عدم موفقیت داشته باشد. علاوه بر این، هر گونه استثناء کشف نشده نیز باعث خرابی عملکردی می شود.

برای انتشار معیارهای عملکرد، کد آزمایشی شما می‌تواند Instrumentation#sendStatus تماس بگیرد تا فهرستی از جفت‌های کلید-مقدار ارسال شود. توجه به این نکته ضروری است که:

  1. معیارها می توانند عدد صحیح یا ممیز شناور باشند
  2. هر مقدار غیر عددی حذف خواهد شد
  3. apk آزمایشی شما می‌تواند تست‌های عملکردی یا تست‌های معیار باشد، اما ترکیب هر دو در حال حاضر پشتیبانی نمی‌شود