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

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

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

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

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

একটি পরীক্ষা মডিউলের জন্য একটি পরীক্ষা মডিউল কনফিগার হল একটি প্রয়োজনীয় XML ফাইল যা শীর্ষ স্তরের মডিউল উত্স ফোল্ডারে যোগ করা হয়, যার নাম 'AndroidTest.xml'৷ 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 রাখে"

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

মান ক্ষেত্রের সঠিক উদ্দেশ্য নির্ভর করে প্রস্তুতকারী কীভাবে বিকল্পটিকে সংজ্ঞায়িত করেছে তার উপর: এটি একটি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান বা এমনকি একটি ফাইল পাথ ইত্যাদি হতে পারে৷ উপরের উদাহরণে, "run-command:run-command" নামের অর্থ সংক্ষিপ্ত নাম "রান-কমান্ড" সহ একটি লক্ষ্য প্রস্তুতকারী দ্বারা সংজ্ঞায়িত "রান-কমান্ড" বিকল্পের জন্য আমরা মান নির্ধারণ করছি; এবং "রান-কমান্ড: টিয়ারডাউন-কমান্ড" এর অর্থ হল আমরা "টিয়ারডাউন-কমান্ড" বিকল্পটির জন্য মান নির্ধারণ করছি যা একই লক্ষ্য প্রস্তুতকারী দ্বারা সংক্ষিপ্ত নাম "রান-কমান্ড" দ্বারা সংজ্ঞায়িত করা হয়েছে। এখানে তিনটি সাধারণ লক্ষ্য প্রস্তুতকারীদের একটি সারসংক্ষেপ রয়েছে:

  • ক্লাসের নাম: 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 ব্যবহার করে একটি ইন্সট্রুমেন্টেশন টেস্ট প্যাকেজ চালায় এটি একটি ইন্সট্রুমেন্টেশন পরীক্ষা চালানোর প্রধান উপায়।