ট্রেড ফেডারেশনে একটি হোস্ট-চালিত পরীক্ষা লিখুন

এই পৃষ্ঠাটি বর্ণনা করে কিভাবে হোস্ট দ্বারা চালিত একটি JUnit4-শৈলী ডিভাইস পরীক্ষা লিখতে হয়। এর মানে হল যে জোতার হোস্ট সাইড ডিভাইসের বিরুদ্ধে অ্যাকশন ট্রিগার করতে যাচ্ছে।

মনে রাখবেন যে আমরা "হোস্ট-সাইড" পরীক্ষা এবং "হোস্ট-চালিত" পরীক্ষাগুলিকে কিছুটা আলাদা বলে বিবেচনা করি:

  • হোস্ট-চালিত পরীক্ষা: হোস্টে চলমান একটি পরীক্ষা যা এক বা একাধিক ডিভাইসের সাথে ইন্টারঅ্যাক্ট করে। পরীক্ষার অধীনে সিস্টেম (SUT) হোস্টে নয় তবে হোস্ট থেকে পরীক্ষা করা হচ্ছে।
  • হোস্ট-সাইড পরীক্ষা: একটি পরীক্ষা যা সম্পূর্ণরূপে হোস্টে চলছে এবং শুধুমাত্র হোস্টে কিছু পরীক্ষা করা হচ্ছে, উদাহরণস্বরূপ ইউনিট পরীক্ষা।

কেন একটি ইন্সট্রুমেন্টেশন পরীক্ষার পরিবর্তে একটি হোস্ট-চালিত পরীক্ষা তৈরি করবেন?

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

হোস্ট-চালিত পরীক্ষাগুলি অতিরিক্ত সেটআপ পদক্ষেপগুলিও চালাতে পারে যার জন্য বাহ্যিক ডিভাইসগুলির সাথে মিথস্ক্রিয়া প্রয়োজন যার উপর পরীক্ষা নির্ভর করে।

একটি হোস্ট-চালিত পরীক্ষা এই ব্যবহারের ক্ষেত্রেগুলি পরিচালনা করতে পারে এবং আরও পরিস্থিতি সহ ডিভাইসটির উন্নত পরীক্ষার অনুমতি দেয়। আপনি যদি সেই পরিস্থিতিতে থাকেন, একটি হোস্ট-চালিত পরীক্ষা লেখা সবচেয়ে অর্থপূর্ণ।

টিএফ-এ হোস্ট-চালিত পরীক্ষাগুলি কীভাবে লেখা হয়?

এখানে একটি নমুনা আছে:

@RunWith(DeviceJUnit4ClassRunner.class)
public class SampleHostJUnit4DeviceTest extends BaseHostJUnit4Test {
    @Before
    public void setUp() throws Exception {
       // Some setup
    }

    @Test
    public void testCheckWeHaveDevice() throws Exception {
        Assert.assertNotNull(getDevice());
    }
}

ট্রেড ফেডারেশনে হোস্ট-চালিত পরীক্ষাগুলি DeviceJUnit4ClassRunner JUnit4 টেস্ট রানার দ্বারা চালিত হয়। পরীক্ষার ক্লাসের সামগ্রিক গঠন একটি নিয়মিত JUnit4 পরীক্ষার মতো:

  • @BeforeClass
  • @Before
  • @Test
  • @After
  • @AfterClass
  • Assume , Assert

BaseHostJunit4Test প্রসারিত করা দরকারী টেস্টিং ইউটিলিটি API উত্তরাধিকারী হওয়ার একটি উপায় যেমন:

  • installPackage : লক্ষ্য ডিভাইসে একটি APK ইনস্টল করার অনুমতি দেয়।
  • installPackageAsUser : টার্গেট ডিভাইসে ব্যবহারকারী হিসাবে একটি APK ইনস্টল করার অনুমতি দেয়।
  • uninstallPackage : একটি APK আনইনস্টল করার অনুমতি দেয়।
  • isPackageInstalled : একটি প্যাকেজ ইনস্টল করা আছে কিনা তা পরীক্ষা করুন।
  • hasDeviceFeature : ডিভাইসটি একটি বৈশিষ্ট্য সমর্থন করে কি না তা পরীক্ষা করুন। ( pm list features )
  • runDeviceTests(DeviceTestRunOptions options) : সম্ভাব্য সমস্ত বিকল্প পরিচালনা করতে DeviceTestRunOptions ব্যবহার করে একটি টার্গেট ডিভাইসের বিরুদ্ধে একটি ইন্সট্রুমেন্টেশন পরীক্ষা চালান।

এছাড়াও Tradefed ডিভাইস অবজেক্টে অ্যাক্সেস প্রদান করুন:

  • getDevice() : ডিভাইসটি ম্যানিপুলেট করার জন্য একটি TF ডিভাইস অবজেক্ট প্রদান করে।
  • getBuild() : বিল্ড সম্পর্কে তথ্য পেতে একটি বিল্ড ইনফো TF অবজেক্ট রিটার্ন করে।
  • getAbi() : যে ABI পরীক্ষা চলছে তার বিপরীতে ফেরত দেয়।

ট্রেডফেড সমর্থন: প্রতি-শ্রেণীর ডিভাইস প্রস্তুতি এবং পরিষ্কার করা

JUnit4 @BeforeClass এবং @AfterClass শুধুমাত্র স্ট্যাটিক পদ্ধতিতে প্রযোজ্য, যা কিছু ডিভাইস-নির্দিষ্ট, এক-সময়, প্রতি-শ্রেণী সেটআপ বা পরিষ্কার করার জন্য #getDevice() হ্যান্ডলার ব্যবহার করা অসম্ভব করে তোলে। এই সমস্যাটি সমাধান করতে, Tradefed টীকা ব্যবহার করুন।

  • @BeforeClassWithInfo: @BeforeClass টীকাগুলির আগে চলে
  • @AfterClassWithInfo: @AfterClass টীকাগুলির পরে চলে
   @BeforeClassWithInfo
   public static void beforeClassWithDevice(TestInformation testInfo) {
       assertNotNull(testInfo.getDevice());
       testInfo.properties().put("mytest:test-prop", "test");
   }

   @AfterClassWithInfo
   public static void afterClassWithDevice(TestInformation testInfo) {
       assertNotNull(testInfo.getDevice());
       testInfo.properties().put("mytest:test-prop", "test");
   }

TestInformation আপনাকে ডিভাইস ব্যবহার করতে এবং বৈশিষ্ট্যগুলি সঞ্চয় করতে দেয় যা স্ট্যাটিক বা নন-স্ট্যাটিক স্কোপে ব্যবহার করা যেতে পারে। BaseHostJUnit4Test #getTestInformation() মাধ্যমে একটি নন-স্ট্যাটিক সুযোগে TestInformation পেতে সমর্থন করে।

আপনি যদি BaseHostJUnit4Test প্রসারিত না করেন, তাহলে TestInformation অবজেক্টটি পাওয়ার জন্য আপনি ITestInformationReceiver প্রয়োগ করতে পারেন।

ট্রেডফেডে একটি হোস্ট-চালিত পরীক্ষা কীভাবে কনফিগার করবেন?

ট্রেডফেড এক্সএমএল কনফিগারেশন ফাইলে, হোস্ট-চালিত পরীক্ষাগুলি হোস্টটেস্ট রানারের মাধ্যমে চালানো হয়।

<test class="com.android.tradefed.testtype.HostTest" >
    <option name="class" value="android.sample.cts.SampleHostJUnit4DeviceTest" />
</test>