জটিল পরীক্ষার কনফিগারেশন

কিছু পরীক্ষা মডিউলের জন্য কাস্টমাইজড সেটআপের প্রয়োজন হতে পারে এবং ধাপগুলি ছিঁড়ে ফেলার প্রয়োজন হতে পারে যা পরীক্ষার ক্ষেত্রেই করা যায় না। সাধারণ উদাহরণ অন্তর্ভুক্ত হতে পারে:

  • অন্যান্য apks ইনস্টল করুন (পরীক্ষা apk ছাড়াও)
  • ডিভাইসে কিছু ফাইল পুশ করুন
  • কমান্ড চালান (যেমন adb শেল পিএম ...)

অতীতে, উপাদান দলগুলি সাধারণত এই ধরনের কাজগুলি সম্পাদন করার জন্য একটি হোস্ট সাইড টেস্ট লেখার অবলম্বন করে, যার জন্য ট্রেড ফেডারেশন জোতা বোঝার প্রয়োজন হয় এবং সাধারণত একটি পরীক্ষার মডিউলের জটিলতা বৃদ্ধি করে৷

CTS থেকে ধার করে, আমরা এই ধরনের কাজগুলিকে সমর্থন করার জন্য টেস্ট মডিউল কনফিগারেশনের ধারণাটি চালু করেছি, উপরের সাধারণ কাজের তালিকাটি কনফিগারের কয়েকটি লাইন দ্বারা অর্জন করা যেতে পারে। সর্বাধিক নমনীয়তার জন্য, আপনি এমনকি ITargetPreparer বা ITargetCleaner দ্বারা সংজ্ঞায়িত আপনার নিজস্ব লক্ষ্য প্রস্তুতকারী প্রয়োগ করতে পারেন এবং আপনার নিজের পরীক্ষা মডিউল কনফিগারেশনে ব্যবহার করার জন্য সেগুলি কনফিগার করতে পারেন।

একটি পরীক্ষা মডিউলের জন্য একটি পরীক্ষা মডিউল কনফিগার হল একটি প্রয়োজনীয় XML ফাইল যা শীর্ষ স্তরের মডিউল উত্স ফোল্ডারে যোগ করা হয়, যার নাম 'AndroidTest.xml'৷ এক্সএমএল ট্রেড ফেডারেশন টেস্ট অটোমেশন জোতা দ্বারা ব্যবহৃত একটি কনফিগারেশন ফাইলের বিন্যাস অনুসরণ করে। বর্তমানে পরীক্ষার মডিউল কনফিগারেশনের মাধ্যমে পরিচালিত প্রধান ট্যাগগুলি হল “target_preparer” এবং “test” ট্যাগ।

লক্ষ্য প্রস্তুতকারীরা

একটি "target_preparer" ট্যাগ, নাম অনুসারে, একটি টার্গেট প্রস্তুতকারীকে সংজ্ঞায়িত করে ( ITargetPreparer দেখুন) যেটি একটি সেটআপ পদ্ধতি অফার করে, যা পরীক্ষার জন্য পরীক্ষা মডিউল চালানোর আগে কল করা হয়; এবং যদি "target_preparer" ট্যাগে উল্লেখ করা ক্লাসটিও ITargetCleaner প্রয়োগ করে, তাহলে পরীক্ষার মডিউল শেষ হওয়ার পরে এর টিয়ারডাউন পদ্ধতি চালু করা হবে।

অন্তর্নির্মিত সাধারণ মডিউল কনফিগারেশন ব্যবহার করতে, আপনার পরীক্ষার মডিউলের জন্য শীর্ষ স্তরের ফোল্ডারে একটি নতুন ফাইল 'AndroidTest.xml' যোগ করুন এবং নিম্নলিখিত বিষয়বস্তু দিয়ে এটি পূরণ করুন:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

উদাহরণ হিসাবে, আমরা নিম্নলিখিত বিকল্প ট্যাগগুলি যোগ করতে পারি (উপরের "সন্নিবেশ" মন্তব্যে):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

বিকল্পগুলি পরীক্ষার জোতা কনফিগার করবে:

  1. পরীক্ষা মডিউল চালু করার আগে, ডিভাইসে শেল কমান্ড চালান "সেটিংস সুরক্ষিত অ্যাক্সেসিবিলিটি_এনেবল 1"
  2. পরীক্ষা মডিউল শেষ হওয়ার পরে, শেল কমান্ড চালান "সেটিংস সুরক্ষিত অ্যাক্সেসিবিলিটি_এনেবল 0 রাখে"

এই বিশেষ উদাহরণে, পরীক্ষা মডিউল সম্পাদনের আগে/পরে যথাক্রমে অ্যাক্সেসযোগ্যতা সক্ষম/অক্ষম করা হয়েছে। একটি সাধারণ উদাহরণ দেখিয়ে, "বিকল্প" ট্যাগটি কীভাবে ব্যবহার করা হয় সে সম্পর্কে আরও বিশদ বিবরণ কভার করা প্রয়োজন। উপরে দেখানো হিসাবে, ট্যাগের দুটি বৈশিষ্ট্য থাকতে পারে: নাম, মান। নামের বৈশিষ্ট্যটি প্রস্তুতকারীর দ্বারা অফার করা বিকল্পগুলির একটি উল্লেখ করতে হবে।

মান ক্ষেত্রের সঠিক উদ্দেশ্যটি প্রস্তুতকারী কীভাবে বিকল্পটিকে সংজ্ঞায়িত করেছে তার উপর নির্ভর করে: এটি একটি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান বা এমনকি একটি ফাইল পাথও হতে পারে। এখানে তিনটি সাধারণ লক্ষ্য প্রস্তুতকারীদের একটি সারসংক্ষেপ রয়েছে:

  • ক্লাসের নাম: PushFilePreparer

    • সংক্ষিপ্ত নাম : পুশ-ফাইল
    • ফাংশন : টেস্ট কেস ফোল্ডারের অধীনে নির্বিচারে ফাইলগুলিকে ডিভাইসে গন্তব্যে পুশ করে
    • মন্তব্য :
      • এই প্রস্তুতকারক ফোল্ডার থেকে ফোল্ডারে বা ফাইলে ফাইল করতে পারে; অর্থাৎ, আপনি ডিভাইসে একটি ফোল্ডারের নিচে একটি ফাইল পুশ করতে পারবেন না: আপনাকে অবশ্যই সেই ফোল্ডারের অধীনে গন্তব্য ফাইলের নাম উল্লেখ করতে হবে
    • অপশন :
      • push-file: একটি পুশ-স্পেক, স্থানীয় ফাইলটিকে সেই পাথে নির্দিষ্ট করে যেখানে এটি ডিভাইসে পুশ করা উচিত। পুনরাবৃত্তি হতে পারে। যদি একাধিক ফাইল একই দূরবর্তী পথে ঠেলে দেওয়ার জন্য কনফিগার করা হয়, তবে সর্বশেষটি পুশ করা হবে।
      • পুশ: (অপ্রচলিত) একটি পুশ-স্পেক, ' /path/to/srcfile.txt->/path/to/destfile.txt ' বা ' /path/to/srcfile.txt->/path/to/destdir/ হিসাবে বিন্যাসিত /path/to/srcfile.txt->/path/to/destdir/ '। পুনরাবৃত্তি হতে পারে। এই পাথটি পরীক্ষা মডিউল ডিরেক্টরি বা আউট ডিরেক্টরির সাথে সম্পর্কিত হতে পারে।
      • পোস্ট-পুশ: সমস্ত পুশ করার চেষ্টা করার পরে ডিভাইসে চালানোর জন্য একটি কমান্ড (` adb shell <your command> ` সহ)। সাধারণ ব্যবহারের ক্ষেত্রে অনুমতির জন্য chmod ব্যবহার করা হবে
  • ক্লাসের নাম: InstallApkSetup

    • সংক্ষিপ্ত নাম: install-apk
    • ফাংশন: যথেচ্ছ apk ফাইলগুলিকে ডিভাইসে গন্তব্যের নীচে ঠেলে দেয়
    • বিকল্প:
      • test-file-name: ডিভাইসে ইনস্টল করা apk-এর নাম।
      • install-arg: লিডিং ড্যাশ সহ, pm install কমান্ডে পাস করতে হবে অতিরিক্ত আর্গুমেন্ট, যেমন "-d"। পুনরাবৃত্তি হতে পারে
  • ক্লাসের নাম: RunCommandTargetPreparer

    • সংক্ষিপ্ত নাম: রান-কমান্ড
    • ফাংশন: পরীক্ষা মডিউল নির্বাহের আগে বা পরে নির্বিচারে শেল কমান্ডগুলি চালায়
    • বিকল্প:
      • রান-কমান্ড: চালানোর জন্য অ্যাডবি শেল কমান্ড। পুনরাবৃত্তি হতে পারে
      • টিয়ারডাউন-কমান্ড: টিয়ারডাউন পর্বের সময় চালানোর জন্য অ্যাডবি শেল কমান্ড। পুনরাবৃত্তি হতে পারে

টেস্ট ক্লাস

একটি পরীক্ষা শ্রেণী হল ট্রেড ফেডারেশন শ্রেণী যা পরীক্ষা চালানোর জন্য ব্যবহার করা হয়।

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

এখানে তিনটি সাধারণ পরীক্ষার ক্লাস রয়েছে:

  • ক্লাসের নাম: GTest

    • সংক্ষিপ্ত নাম: gtest
    • ফাংশন: একটি পরীক্ষা যা প্রদত্ত ডিভাইসে একটি নেটিভ টেস্ট প্যাকেজ চালায়।
    • বিকল্প:
      • নেটিভ-টেস্ট-ডিভাইস-পাথ: ডিভাইসের পাথ যেখানে নেটিভ পরীক্ষাগুলি অবস্থিত।
  • ক্লাসের নাম: InstrumentationTest

    • সংক্ষিপ্ত নাম: যন্ত্র
    • ফাংশন: একটি পরীক্ষা যা প্রদত্ত ডিভাইসে একটি ইন্সট্রুমেন্টেশন টেস্ট প্যাকেজ চালায়
    • বিকল্প:
      • প্যাকেজ: চালানোর জন্য অ্যান্ড্রয়েড পরীক্ষা অ্যাপ্লিকেশনের ম্যানিফেস্ট প্যাকেজ নাম।
      • ক্লাস: চালানোর জন্য পরীক্ষার ক্লাসের নাম।
      • পদ্ধতি: চালানোর জন্য পরীক্ষা পদ্ধতির নাম।
  • ক্লাসের নাম: AndroidJUnitTest

    • ফাংশন: একটি পরীক্ষা যা প্রদত্ত ডিভাইসে android.support.test.runner.AndroidJUnitRunner ব্যবহার করে একটি ইন্সট্রুমেন্টেশন টেস্ট প্যাকেজ চালায় এটি একটি ইন্সট্রুমেন্টেশন পরীক্ষা চালানোর প্রধান উপায়।