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

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

হোস্ট-সাইড পরীক্ষার প্রকারভেদ

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

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

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

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

<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.bp ফাইলে host_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 (Java) হোস্ট টেস্ট পৃষ্ঠাটি দেখুন।

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

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

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

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

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

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

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

java_test_host {
    name: "HelloWorldHostTest",

    test_options: {
        unit_test: true,
    },

    test_suites: ["general-tests"],

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

    static_libs: [
        "junit",
    ],
}

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

রোবোইলেকট্রিক টেস্টগুলো আইসোলেটেড হোস্ট টেস্টের মতোই একই রানার ব্যবহার করে, তবে এতে কয়েকটি বিশেষ অপশন থাকে।

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

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

<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>

রোবোইলেকট্রিক স্বয়ংক্রিয় উৎপাদনের জন্য সুং-এর নমুনা কনফিগারেশন

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

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 দ্বারা চালানো যায় এমন একটি par ফাইল তৈরি করতে 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 নামে প্যাকেজ করা হয়।