کد پلاتفرم آزمایشی با atest

‫Android Studio for Platform (ASfP) با atest و واحدهای آزمایش Soong ادغام می‌شود تا بتوانید آزمایش‌های پلاتفرم را در ماشین میزبان Linux، دستگاه متصل، یا دستگاه مجازی Cuttlefish از IDE اجرا و اشکال‌زدایی کنید.

پیش‌نیازها

  • پروژه ASfP پیکربندی‌شده با تسویه‌حساب AOSP و هدف lunch را باز کنید.
  • برای آزمایش‌های دستگاه، دستگاه فیزیکی را متصل کنید یا دستگاه مجازی Cuttlefish را که ساختار منطبق دارد راه‌اندازی کنید.

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

می‌توانید آزمایش‌های پلاتفرم و جلسات اشکال‌زدایی را از چند مکان در ASfP راه‌اندازی کنید:

  • Android.bp هدف آزمایشی: فایل Android.bp را باز کنید و در کنار هر واحد آزمایشی (*_test یا *_test_host)، روی اجرا در کنار کلیک کنید:
    • اجرا: برای همه انواع واحد آزمایشی Soong دردسترس است (android_test، java_test_host، cc_test، rust_test، python_test، sh_test، و android_robolectric_test).
    • عیب‌یابی: برای android_test واحد دردسترس است (بااستفاده از atest --wait-for-debugger به عیب‌یاب Java پیوست شده است) و واحدهای آزمایش C++‎ یا Rust‏ (cc_test،‏ cc_test_host،‏ rust_test، و rust_test_host، تحت عیب‌یاب LLDB داخلی ASfP راه‌اندازی شده است).
  • نمادهای حاشیه فایل منبع: روی اجرا کردن در کنار کلاس آزمایشی یا @Test روش در کد منبع کلیک کنید تا آن آزمون خاص را اجرا یا اشکال‌زدایی کنید.
  • منو زمینه‌ای کلیک راست: روی فایل، کلاس، روش، یا Android.bp واحد آزمایشی کلیک راست کنید و اجرا یا عیب‌یابی را انتخاب کنید.
  • عامل داخلی (هوش مصنوعی در Android Studio): در پنجره ابزار عامل، «عامل داخلی» می‌تواند atest هدف را برای تأیید تغییرات پس‌از ویرایش کد اجرا کند.
  • پایانه یکپارچه: برای اجرای مستقیم دستورات atest، View (نما) > Tool Windows (پنجره‌های ابزار) > Terminal (پایانه) را باز کنید.

پیکربندی و اشکال‌زدایی آزمایش هوشمند

وقتی آزمایشی را از کنارنویس یا منوِ زمینه‌ای راه‌اندازی می‌کنید، ASfP پیکربندی اجرای آزمایش Soong را بااستفاده از گراف واحد Android.bp شما ایجاد و پیکربندی می‌کند.

اشکال‌زدایی android_test هدف Java و Kotlin

روی نماد کنار android_test واحد در Android.bp، یا کنار کلاس Java یا Kotlin JUnit یا روش @Test کلیک کنید، و سپس عیب‌یابی «<TestName>» را انتخاب کنید. از کنار فایل منبع، ASfP نزدیک‌ترین واحد android_test دربرگیرنده را که srcs آن شامل فایل است انتخاب می‌کند و پیکربندی را <module>، <module>:<SimpleClass>، یا <module>:<SimpleClass>#<method> نام‌گذاری می‌کند.

‫ASfP با --wait-for-debugger در atest اجرا می‌شود، ویژگی package هدف را از AndroidManifest.xml واحد می‌خواند، منتظر می‌ماند تا آن فرایند در دستگاه متصل اجرا شود، و اشکال‌زدای Java را پیوست می‌کند.

عیب‌یابی روش android_test از حاشیه ویرایشگر

اشکال‌زدایی cc_test و rust_test هدف تحت LLDB

برای اشکال‌زدایی واحد آزمایشی C++‎ یا Rust (cc_test، cc_test_host، rust_test، یا rust_test_host)، روی نماد حاشیه Android.bp کلیک کنید و اشکال‌زدایی '<TestName>' را انتخاب کنید. ASfP به‌جای اجرای فایل اجرایی آزمایشی کامپایل‌شده ازطریق atest، آن را تحت اشکال‌زدای LLDB داخلی خود راه‌اندازی می‌کند.

پیکربندی پیکربندی اجرای «آزمایش Soong»

اجرا > ویرایش پیکربندی‌ها را باز کنید و پیکربندی آزمایش Soong را برای سفارشی‌سازی نحوه ساخت، استقرار، و راه‌اندازی آزمایش‌ها انتخاب کنید:

  • تکمیل خودکار واحد و Android.bp پیمایش: فیلد واحد از واحدهای آزمایشی نمایه Soong در پروژه شما به‌طور خودکار تکمیل می‌شود. برای پریدن به بیانیه واحد در Android.bp، روی رفتن به Android.bp در کنار فیلد کلیک کنید.
  • اجرا در: دستگاه یا میزبان (شامل host_supported: true): ASfP قانون واحد و زنجیره انتقالی آن را ارزیابی می‌کند defaults (host_supported، device_supported، enabled، target.android.enabled، و target.host.enabled):
    • آزمایش‌های دوهدفه (cc_test و rust_test با host_supported: true): هر دو دکمه رادیویی دستگاه و میزبان درحال‌حاضر دردسترس هستند (به‌طور پیش‌فرض روی دستگاه تنظیم شده‌اند). دستگاه و میزبان هرکدام الگوی اشکال‌زدای LLDB مستقل خودشان را دارند. جابه‌جایی اجرا در بین دستگاه و میزبان بین پیکربندی دستگاه از دور lldb-server و پیکربندی باینری میزبان محلی جابه‌جا می‌شود و درعین‌حال سفارشی‌سازی‌های انجام‌شده در هر هدف را حفظ می‌کند.
    • آزمایش‌های تک‌هدف: اگر آزمایش C++ یا Rust فقط برای یک محیط (مثل cc_test فقط دستگاه یا cc_test_host فقط میزبان یا rust_test_host) ساخته شود، ASfP هدف پشتیبانی‌شده را انتخاب می‌کند و دکمه رادیویی پشتیبانی‌نشده را با نکته‌ابزاری توضیحی غیرفعال می‌کند: "<module> (<ruleType>) doesn't build for the host or device."
  • تکالیف پیش‌از راه‌اندازی (ساختن واحد آزمایشی بومی و پیاده‌سازی با atest): هر پیکربندی Soong Test به‌طور پیش‌فرض شامل دو تکلیف پیش‌از راه‌اندازی است:
    • ساختن واحد آزمایش بومی: قبل‌از شروع LLDB، <module>-target (برای دستگاه) یا <module>-host (برای میزبان) را می‌سازد.
    • پیاده‌سازی با atest: هنگام اشکال‌زدایی در دستگاه، atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi> اجرا می‌شود، بنابراین Tradefed وابستگی‌های آزمایش را ارسال می‌کند و آماده‌سازهای هدف را قبل‌از راه‌اندازی باینری LLDB اجرا می‌کند. نشانگر را روی تراشه استقرار با آزمایش نگه دارید تا پیش‌نمایش فرمان دقیق atest را ببینید. برای تکرار سریع‌تر پس‌از اینکه وابستگی‌ها ازقبل در دستگاه وجود دارد، Deploy with atest را بردارید تا ASfP فقط باینری آزمایش را مستقیماً ارسال کند. وقتی اجرا در: میزبان را انتخاب می‌کنید، ASfP به‌طور خودکار از استقرار با atest صرف‌نظر می‌کند.
  • گزینه‌های اصلاح و اشکال‌زدا (کارت‌های گزینه‌های LLDB): از گزینه‌های اصلاح برای افزودن فیلدهای پیکربندی اختیاری استفاده کنید:
    • آرگومان‌های برنامه (فقط تست‌های سیستم‌عامل، C++‎، و Rust): آرگومان‌های اضافی که مستقیماً به باینری cc_test یا rust_test بعداز فیلتر --gtest_filter یا libtest هنگام اشکال‌زدایی ارسال می‌شوند.
    • متغیرهای atest (آزمایش): پرچم‌های اضافی که هنگام اجرای آزمایش یا هنگام آماده‌سازی دستگاه با استقرار با atest به atest ارسال می‌شوند.
    • اشکال‌زدا (فقط آزمایش‌های C++ و Rust): وقتی واحد هدف cc_test* یا rust_test* باشد نشان داده می‌شود. برای روشن/خاموش کردن کارت‌های گزینه‌های LLDB (مثل توقف در ورودی، نمادهای حافظه نهان در سراسر جلسه‌ها، بار کردن نمادها درصورت نیاز، یا با دیداری‌سازهای Rust برای آزمایش‌های Rust)، روی بازنشانی به پیش‌فرض‌ها کلیک کنید تا الگوی فعال دستگاه یا میزبان بازنشانی شود، یا دایرکتوری‌های نماد، فرمان‌های Init،‏ Pre-run،‏ Post-run، یا Exit، و راه‌اندازی JSON (تنظیمات DAP) را از گزینه‌های اصلاح > عیب‌یاب اضافه کنید.

پیکربندی اجرای آزمایشی Soong که «وظایف قبل‌از راه‌اندازی»، «هدف‌های دستگاه یا میزبان»، و گزینه‌های LLDB را نشان می‌دهد

مشاهده نتایج آزمایش

پیشرفت اجرای آزمایش، وضعیت موفق یا ناموفق بودن، ردیابی پشته، و گزارش‌های دستگاه به‌طور هم‌زمان در پنجره ابزار اجرا یا اشکال‌زدایی در ASfP نشان داده می‌شود.

نکته‌هایی برای آزمایش

  • اجرای آزمایش‌های هدفمند: روش‌های جداگانه را از حاشیه ویرایشگر بدون اجرای مجموعه آزمایش کامل آزمایش کنید.
  • استفاده از تصاویر فوری Cuttlefish: هنگام اجرای آزمایش‌های دستگاه در دستگاه‌های مجازی Cuttlefish، از تصاویر فوری برای بازیابی وضعیت دستگاه پاک بین اجراها استفاده کنید.
  • بازرسی گزارش‌های ساخت Soong: اگر آزمایشی قبل‌از اجرا کامپایل نشد، پنجره ابزار Soong را برای تشخیص خرابی کامپایلر بررسی کنید.