TF-এ একটি হোস্ট-সাইড ডিভাইসবিহীন পরীক্ষা লিখুন

এই পৃষ্ঠাটি আপনাকে বলে যে কীভাবে একটি হোস্ট-সাইড পরীক্ষা লিখতে হয় যার জন্য কোনও ডিভাইসের প্রয়োজন হয় না, যেমন একটি পরীক্ষা যা একটি Linux GCE উদাহরণে চলে। (একটি হোস্ট-চালিত পরীক্ষা লেখার বিষয়ে বিস্তারিত জানার জন্য একটি ডিভাইসের প্রয়োজন, ট্রেড ফেডারেশনে একটি হোস্ট-চালিত পরীক্ষা লিখুন দেখুন।)

হোস্ট-সাইড পরীক্ষার ধরন

আপনি ট্রেড ফেডারেশন (TF) এর মাধ্যমে বিভিন্ন ধরণের হোস্ট-সাইড পরীক্ষা চালাতে পারেন।

নেটিভ (gtest) পরীক্ষা

একটি প্ল্যাটফর্ম পরীক্ষা করার জন্য নেটিভ টেস্ট (gtest) তৈরি করুন। পরীক্ষার জন্য কোনো ডিভাইসের প্রয়োজন না হলে, এটি একটি হোস্টে চালান; পরীক্ষা অনেক দ্রুত যে ভাবে চালানো হবে. একটি টেস্ট হোস্টে চালানোর জন্য এই ধরনের পরীক্ষাগুলি কনফিগার করতে, TF রানার HostGTest ব্যবহার করুন।

এটি একটি নমুনা TradeFed পরীক্ষার কনফিগারেশন:

<configuration description="Runs hello_world_test.">
    <option name="null-device" value="true" />
    <test class="com.android.tradefed.testtype.HostGTest" >
        <option name="module-name" value="hello_world_test" />
    </test>
</configuration>

পরীক্ষার কনফিগারেশন একটি হোস্টে একটি gtest পরীক্ষা চালায় ( hello_world_test )। উদাহরণ পরীক্ষার কনফিগারেশন স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে। আপনার পরীক্ষার জন্য একটি বিশেষ সেটআপ বা পরিচ্ছন্নতার প্রয়োজন না হলে, আপনি সঠিক TF পরীক্ষা কনফিগারেশন তৈরি করতে স্বয়ংক্রিয় পরীক্ষা-কনফিগ তৈরির উপর নির্ভর করতে পারেন।

একটি হোস্ট-সাইড gtest কনফিগার করতে এবং স্বয়ংক্রিয় পরীক্ষা-কনফিগার জেনারেশন সক্ষম করতে, hello_world_test- এর মতো Android.bphost_supported true এ সেট করুন।

একটি নেটিভ পরীক্ষা লেখার বিষয়ে আরও তথ্যের জন্য, একটি নতুন নেটিভ পরীক্ষার উদাহরণ যোগ করা দেখুন।

JAR হোস্ট পরীক্ষা

JAR (জাভা) হোস্ট পরীক্ষা , যেমন JUnit, এমন পরীক্ষা যা কোনো ডিভাইসে চালানোর প্রয়োজন হয় না এবং যেগুলি আপনার জাভা প্রকল্পের কোড কভারেজ প্রদান করে। রানার HostTest ব্যবহার করে এই ধরনের পরীক্ষাগুলি একটি টেস্ট হোস্টে চালানোর জন্য কনফিগার করা যেতে পারে।

ট্রেডফেড পরীক্ষার কনফিগারেশনের নমুনা

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

পরীক্ষার কনফিগারেশন HelloWorldHostTest- এর একটি হোস্ট-সাইড JUnit পরীক্ষা চালায়। উল্লেখ্য যে উপরের পরীক্ষা কনফিগারেশনটি স্বয়ংক্রিয়ভাবে তৈরি হতে পারে। আপনার পরীক্ষার বিশেষ সেটআপ বা ক্লিনআপের প্রয়োজন না হলে, সঠিক TradeFed পরীক্ষা কনফিগারেশন তৈরি করতে স্বয়ংক্রিয় পরীক্ষা-কনফিগারেশন প্রজন্মের উপর নির্ভর করুন।

কীভাবে একটি JAR হোস্ট পরীক্ষা লিখতে হয় সে সম্পর্কে আরও বিশদ বিবরণের জন্য, JAR (জাভা) হোস্ট টেস্ট পৃষ্ঠাটি পড়ুন।

বিচ্ছিন্ন জাভা হোস্ট পরীক্ষা

ডিভাইসবিহীন জাভা পরীক্ষাগুলি সামান্য পারফরম্যান্স খরচ সহ একটি বিচ্ছিন্ন পরিবেশে চালানো যেতে পারে। যাইহোক, এই পরিবেশ ব্যবহার করার আগে কিছু প্রধান বিবেচনা করা উচিত।

  • এটি Robolectric এবং JUnit ইউনিট পরীক্ষার জন্য ব্যবহৃত ডিফল্ট রানার
  • Tradefed শুধুমাত্র বিচ্ছিন্ন পরিবেশে JUnit পরীক্ষা সমর্থন করে।
  • শুধুমাত্র স্ট্যাটিকভাবে লিঙ্কযুক্ত নির্ভরতা সমর্থিত। lib এর সাথে ঘোষিত কোন নির্ভরতা ক্লাসপথে অন্তর্ভুক্ত করা হয় না।
  • আইসোলেশন রানার শুধুমাত্র শিম রানার এবং আপনার পরীক্ষার জারকে ক্লাসপথে রাখে।
  • এই রানার দিয়ে প্রতি পরীক্ষা চালানোর জন্য কিছু নির্দিষ্ট ওভারহেড আছে।

নমুনা ট্রেডফেড পরীক্ষার কনফিগারেশন (বিচ্ছিন্ন)

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.IsolatedHostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

স্বয়ংক্রিয় জেনারেশনের জন্য নমুনা সুং কনফিগারেশন

উপরের মত পরীক্ষা কনফিগার ম্যানুয়ালি তৈরি করার পরিবর্তে, Soong এই উদাহরণের মত একটি ঘোষণা ব্যবহার করে কনফিগার স্বয়ংক্রিয়ভাবে তৈরি করতে পারে।

java_test_host {
    name: "HelloWorldHostTest",

    test_options: {
        unit_test: true,
    },

    test_suites: ["general-tests"],

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

    static_libs: [
        "junit",
    ],
}

রোবোলেক্ট্রিক পরীক্ষা

রোবোলেক্ট্রিক পরীক্ষাগুলি কয়েকটি বিশেষ বিকল্প সহ বিচ্ছিন্ন হোস্ট পরীক্ষার মতো একই রানার ব্যবহার করে।

  • robolectric-resources বিকল্পটি কয়েকটি রোবোলেক্ট্রিক-নির্দিষ্ট কমান্ড লাইন বিকল্পকে সাবপ্রসেসে পাস করার পাশাপাশি সাবপ্রসেস ক্লাসপথে android-all এর ট্রি বিল্ড যুক্ত করে। অন্য দুটি সর্বোত্তম অনুশীলন হলেও, এই বিকল্পটি যে কোনো সাফল্যের সাথে রোবোলেক্ট্রিক পরীক্ষা চালানোর জন্য বাধ্যতামূলক
  • java-folder বিকল্পটি সাবপ্রসেস দ্বারা ব্যবহৃত জাভা রানটাইম পরিবর্তন করতে দেয়। রোবোলেক্ট্রিক বিশেষ জাভা সংস্করণ পছন্দ করে যা হোস্ট সিস্টেমের পছন্দের JVM এর সাথে সারিবদ্ধ নাও হতে পারে বলে এটি প্রয়োজনীয়।
  • exclude-paths বিকল্পটি সাবপ্রসেস রানারকে নির্দিষ্ট মডিউলগুলি লোড করা এড়াতে অনুমতি দেয়, যা কার্যকর হয় যখন একটি JAR বহিরাগত ক্লাস নিয়ে আসে যা লোড ত্রুটির কারণ হতে পারে। java. SecurityException ব্যতিক্রম নিক্ষেপ এড়াতে একটি সাধারণ বর্জন।

নমুনা রোবোলেক্ট্রিক কনফিগারেশন

<configuration description="Executes a Sample Robolectric Test">
    <option name="java-folder" value="prebuilts/jdk/jdk9/linux-x86/" />
    <option name="exclude-paths" value="java" />
    <option name="use-robolectric-resources" value="true" />
    <test class="com.android.tradefed.testtype.IsolatedHostTest">
        <option name="jar" value="RobolectricExampleTest.jar" />
    </test>
</configuration>

রোবোলেক্ট্রিক অটোজেনারেশনের জন্য নমুনা সুং কনফিগারেশন

উপরের মত পরীক্ষা কনফিগার ম্যানুয়ালি তৈরি করার পরিবর্তে, Soong এই উদাহরণের মত একটি ঘোষণা ব্যবহার করে কনফিগার স্বয়ংক্রিয়ভাবে তৈরি করতে পারে।

android_robolectric_test {
    name: "HelloWorldRoboTest",
    srcs: [
        "src/**/*.java",
    ],

    // Include the testing libraries
    static_libs: [
        "mockito-robolectric-prebuilt",
        "platform-test-annotations",
        "testng",
        "truth-prebuilt",
    ],

    instrumentation_for: "HelloWorldApp",
}

পাইথন পরীক্ষা

যদি পরীক্ষার লজিকটি পাইথনে লেখা হয়, তাহলে TF PythonBinaryHostTest দ্বারা চালানো যেতে পারে এমন একটি সমান ফাইল তৈরি করতে বিল্ড টাইপ python_test_host ব্যবহার করুন।

ট্রেডফেড পরীক্ষার কনফিগারেশনের নমুনা

<configuration description="Config to run atest unittests">
    <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" >
        <option name="par-file-name" value="atest_unittests" />
        <option name="test-timeout" value="2m" />
    </test>
</configuration>

টেস্ট স্যুট সেটিং

একটি প্রদত্ত বিল্ডের জন্য TF দ্বারা হোস্ট-সাইড পরীক্ষা অ্যাক্সেসযোগ্য হওয়ার জন্য, পরীক্ষা মডিউল `test_suites` সেটিংটিকে `general-tests` তে সেট করুন:

test_suites: ["general-tests"],

এই সেটিং দিয়ে, test_suites টার্গেটে পরীক্ষাটিকে general-tests.zip এ প্যাকেজ করা হয়।