تست میزبان JAR

تست‌های میزبان آرشیو جاوا (JAR) باید پیاده‌سازی شوند تا پوشش کاملی از کد نرم‌افزار شما ارائه دهند. دستورالعمل‌های ساخت تست‌های واحد محلی را دنبال کنید. تست‌های واحد کوچکی برای اعتبارسنجی یک تابع خاص بنویسید و نه بیشتر.

مثال

فایل Blueprint زیر یک مثال تست میزبان JAR ساده Hello World را ارائه می‌دهد تا آن را کپی کرده و با نیازهای خود تطبیق دهید: platform_testing/tests/example/jarhosttest/Android.bp

این مربوط به کد تست واقعی موجود در: platform_testing/tests/example/jarhosttest/test/android/test/example/helloworld/HelloWorldTest.java است

برای راحتی، تصویری از فایل Blueprint در اینجا قرار داده شده است:

java_test_host {
    name: "HelloWorldHostTest",

    test_suites: ["general-tests"],

    srcs: ["test/**/*.java"],

    static_libs: [
        "junit",
        "mockito",
    ],
}

عبارت java_test_host در ابتدا نشان می‌دهد که این یک تست میزبان JAR است. نمونه‌ای از کاربرد آن را در آدرس زیر ببینید: frameworks/base/tools/powermodel/Android.bp

تنظیمات

برای توضیحات مربوط به تنظیمات زیر به ادامه مطلب مراجعه کنید:

  • تنظیم name زمانی الزامی است که نوع ماژول java_test_host (در ابتدای بلوک) مشخص شده باشد. این تنظیم به ماژول شما یک نام می‌دهد و فایل JAR حاصل نیز همان نام و پسوند .jar را دارد. در مثال زیر، فایل JAR حاصل HelloWorldHostTest.jar نامگذاری شده است. علاوه بر این، این تنظیم یک نام make target برای ماژول شما تعریف می‌کند، به طوری که می‌توانید make [options] <HelloWorldHostTest> برای ساخت ماژول تست خود و تمام وابستگی‌های آن استفاده کنید.

    name: "HelloWorldHostTest",
    
  • تنظیم test_suites باعث می‌شود که تست به راحتی توسط مهار تست فدراسیون تجارت قابل کشف باشد. سایر مجموعه‌های تست مانند CTS را می‌توان در اینجا اضافه کرد تا تست میزبان JAR قابل اشتراک‌گذاری باشد.

    test_suites: ["general-tests"],
    
  • تنظیم static_libs به سیستم ساخت دستور می‌دهد تا محتویات ماژول‌های نامگذاری شده را در APK حاصل از ماژول فعلی بگنجاند. این بدان معناست که انتظار می‌رود هر ماژول نامگذاری شده یک فایل .jar تولید کند. محتوای ماژول برای حل ارجاعات classpath در طول زمان کامپایل استفاده می‌شود و در APK حاصل گنجانده می‌شود.

    static_libs: [
        "junit",
    ],