افزودن آزمایش‌های واحد و کارکردی

این بخش توضیح می‌دهد که چگونه پس‌از ایجاد تغییر در پروژه، آزمایش‌های «فدراسیون تجارت» را اجرا کنید و در آن‌ها همیاری کنید. ازجمله:

  • محل افزودن کلاس‌های آزمون واحد جدید
  • اجرای آزمون‌های واحد در Eclipse و خارج از Eclipse IDE
  • محل افزودن آزمایش‌های کارکردی
  • درحال اجرای آزمایش‌های کارکردی
  • درحال اجرای برخی‌از اعتبارسنجی‌های پیش‌ارسال TF به‌صورت محلی

افزودن آزمون‌های واحد

در «پروژه منبع باز Android»‏ (AOSP)، کلاس آزمون‌های واحد را در اینجا اضافه کنید: tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

مهم: افزودن کلاس‌های آزمایش واحد جدید به این مکان‌ها باعث می‌شود این کلاس‌ها بدون راه‌اندازی اضافی به‌طور خودکار در پیش‌ارسال اجرا شوند.

اجرای آزمون‌های واحد

همه آزمایش‌های واحد AOSP و آزمایش‌های کارکردی برای Trade Federation در پروژه tools/tradefederation/core/tests قرار دارند.

در Eclipse، برای اجرای یک آزمایش واحد تکی، کافی است روی آزمایش کلیک راست کنید و اجرا به‌عنوان > JUnit را انتخاب کنید. برای اجرای همه آزمون‌های واحد، مجموعه com.android.tradefed.UnitTests را اجرا کنید.

پس‌از ساختن، می‌توانید آزمایش واحد را از خط فرمان در درخت منبع Tradefed نیز شروع کنید، به این صورت: tools/tradefederation/core/javatests/run_tradefed_tests.sh

آزمایش‌های واحد را می‌توان به‌صورت مستقل اجرا کرد، اما آزمایش‌های عملکردی باید بااستفاده از خود Trade Federation اجرا شوند؛ این آزمایش‌ها به دستگاه Android نیاز دارند. همه آزمایش‌های عملکردی باید از قرارداد نام‌گذاری *FuncTest پیروی کنند.

بررسی نتایج آزمون‌های واحد

هنگام اجرای run_tradefed_tests.sh، آزمون‌های واحد همه بخش‌های مهار آزمون ازجمله برخی‌از شرایط خطا را تمرین می‌کنند. برونداد پرحرفی را در کنسول، ازجمله ردیابی پشته‌ای، چاپ خواهد کرد.

خلاصه نهایی نتایج نشان می‌دهد که آیا خطایی رخ داده است یا نه.

نمونه خلاصه نهایی در کنسول:

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

همه آزمایش‌ها برای قبولی حفظ می‌شوند، بنابراین اگر در تغییر محلی شما خرابی رخ داد لطفاً مطمئن شوید که آزمایش‌ها اصلاح شده‌اند.

افزودن آزمایش‌های کارکردی

  • اگر آزمون عملکردی شما شامل دستگاه باشد (از هر ITestDevice API استفاده کند)، تعریف مجموعه در com.android.tradefed.DeviceFuncTests قرار دارد. درغیراین‌صورت، تعریف مجموعه در com.android.tradefed.FuncTests قرار دارد.

  • اگر روش‌های آزمایشتان برای قرار دادن در یکی از زیرکلاس‌های مجموعه موجود منطقی است، ترجیحاً آن را در آنجا اضافه کنید. درغیراین‌صورت، می‌توانید کلاس جدیدی به مجموعه مربوطه اضافه کنید.

  • در هر دو حالت، با افزودن آن به مجموعه، آزمایش شما به‌طور خودکار در خط لوله CI با دیگر آزمایش‌های عملکردی اجرا می‌شود.

اجرای آزمایش‌های کارکردی

برای اجرای آزمایش کارکردی از Eclipse:

  1. مطمئن شوید دستگاهی به میزبان متصل باشد و adb و درصورت لزوم fastboot در «مسیر» Eclipse باشد. آسان‌ترین راه برای انجام این کار این است که Eclipse را از یک راه‌اندازی پوسته با PATH مناسب راه‌اندازی کنید.
  2. برنامه Java ایجاد کنید. پیکربندی را ازطریق اجرا > پیکربندی‌های اجرا اجرا کنید.
  3. پروژه را روی tradefed-tests و کلاس اصلی را روی com.android.tradefed.command.CommandRunner تنظیم کنید.
  4. ‫m tradefed-all را اجرا کنید.
  5. آرگومان‌های خط فرمان زیر را در برگه آرگومان‌ها ارائه دهید: host --class <full path of test class to run>
  6. روی اجرا کلیک کنید؛

برای اجرای آزمایش‌های کارکردی خارج از Eclipse.

  1. «فدراسیون تجارت» را بسازید.
  2. دستگاه Android را به میزبان متصل کنید.
  3. اجرای tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. درصورت تمایل، دستگاه را با افزودن --serial <serial no> همان‌طور که در خروجی adb devices نشان داده می‌شود انتخاب کنید.

اجرای آزمایش‌های پیش‌از ارسال TF دربرابر تغییرات محلی

اگر می‌خواهید به روشی مشابه پیش‌ارسال TF اجرا کنید، از این استفاده کنید:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

این کار باعث می‌شود همه آزمایش‌های پیش‌از ارسال TF دربرابر TF ساخته‌شده محلی شما اجرا شود تا به شما کمک کند تأیید کنید که تغییرتان هیچ‌یک از آزمایش‌ها را خراب نمی‌کند.

آزمایش‌های پیش‌ارسال TF ابرمجموعه‌ای از آزمایش‌های واحد بالا هستند، اما اجرای آن‌ها کندتر است. بنابراین توصیه می‌شود که آزمایش‌های واحد را درطول توسعه برای اعتبارسنجی سریع‌تر اجرا کنید و پیش‌از بارگذاری CL، پیش‌ارسال‌ها را اجرا کنید.