কিছু টেস্ট মডিউলের জন্য কাস্টমাইজ করা সেট-আপ এবং টিয়ার ডাউন ধাপের প্রয়োজন হতে পারে যা টেস্ট কেসের মধ্যে করা যাবে না। সাধারণ উদাহরণের মধ্যে এগুলি অন্তর্ভুক্ত থাকতে পারে:
- অন্যান্য APK ইনস্টল করুন (টেস্ট APK ছাড়াও)
- ডিভাইসে কিছু ফাইল পুশ করুন
- কমান্ড রান করা (যেমন, adb shell pm ...)
অতীতে, কম্পোনেন্ট টিম সাধারণত এই ধরনের কাজ করার জন্য হোস্ট সাইড টেস্ট লিখত, যার জন্য ট্রেড ফেডারেশন হার্নেস বুঝতে হয় এবং সাধারণত টেস্ট মডিউলের জটিলতা বাড়ায়।
CTS থেকে ধার করে, আমরা এই ধরনের টাস্কের জন্য টেস্ট মডিউল কনফিগারেশনের ধারণা নিয়ে এসেছি। উপরে দেওয়া সাধারণ টাস্কের তালিকাটি মাত্র কয়েক লাইন কনফিগারেশনের মাধ্যমে সম্পূর্ণ করা যেতে পারে। সর্বাধিক নমনীয়তার জন্য, আপনি এমনকি নিজের টার্গেট প্রস্তুতকারীও প্রয়োগ করতে পারেন, যেমন ITargetPreparer বা ITargetCleaner দ্বারা সংজ্ঞায়িত করা হয়েছে, এবং আপনার নিজস্ব টেস্ট মডিউল কনফিগারেশনে ব্যবহার করার জন্য সেগুলি কনফিগার করুন।
টেস্ট মডিউলের জন্য টেস্ট মডিউল কনফিগারেশন হল একটি প্রয়োজনীয় XML ফাইল যা সবচেয়ে উপরের লেভেলের মডিউল সোর্স ফোল্ডারে যোগ করা হয়, এটির নাম ‘AndroidTest.xml’। XML ফাইলটি Trade Federation টেস্ট অটোমেশন হার্নেস দ্বারা ব্যবহৃত কনফিগারেশন ফাইলের ফর্ম্যাট মেনে চলে। বর্তমানে টেস্ট মডিউল কনফিগারেশনের মাধ্যমে ম্যানেজ করা প্রধান ট্যাগগুলি হল "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>
যেমন, আমরা নিম্নলিখিত বিকল্প ট্যাগ যোগ করতে পারি (উপরে "insert" কমেন্টে ):
<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>
বিকল্পগুলি টেস্ট হার্নেসকে এগুলি কনফিগার করবে:
- টেস্ট মডিউল চালু করার আগে, ডিভাইসে “settings put secure accessibility_enabled 1” শেল কমান্ড এক্সিকিউট করুন
- টেস্ট মডিউল সম্পূর্ণ হওয়ার পরে, শেল কমান্ড “settings put secure accessibility_enabled 0” এক্সিকিউট করুন
এই নির্দিষ্ট উদাহরণে, টেস্ট মডিউল এক্সিকিউশনের আগে/পরে অ্যাক্সেসিবিলিটি চালু/বন্ধ করা হয়েছে। একটি সহজ উদাহরণের মাধ্যমে দেখানো হয়েছে যে, কীভাবে "বিকল্প" ট্যাগ ব্যবহার করা হয় সেই সম্পর্কে আরও বিবরণ কভার করা প্রয়োজন। উপরে দেখানো হয়েছে, ট্যাগে দুটি অ্যাট্রিবিউট থাকতে পারে: নাম, ভ্যালু। নাম অ্যাট্রিবিউটকে অবশ্যই প্রিপেয়ারারের দেওয়া বিকল্পগুলির মধ্যে একটিকে রেফার করতে হবে।
ভ্যালু ফিল্ডের সঠিক উদ্দেশ্য নির্ভর করে যে প্রস্তুতকারক কীভাবে বিকল্পটি সংজ্ঞায়িত করেছেন: এটি একটি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান বা এমনকি একটি ফাইল পাথ হতে পারে। তিনটি সাধারণ টার্গেট প্রিপেয়ারারের সারসংক্ষেপ এখানে দেওয়া হল:
ক্লাসের নাম: PushFilePreparer
- ছোট নাম: push-file
- ফাংশন: টেস্ট কেস ফোল্ডারের মধ্যে থাকা যেকোনও ফাইল ডিভাইসের গন্তব্যে পুশ করে
- মনে রাখবেন:
- এই প্রিপেয়ারার ফোল্ডার থেকে ফোল্ডারে বা ফাইল থেকে ফাইলে পুশ করতে পারে; অর্থাৎ, আপনি ডিভাইসে কোনও ফোল্ডারের মধ্যে ফাইল পুশ করতে পারবেন না: আপনাকে সেই ফোল্ডারের মধ্যে ডেস্টিনেশন ফাইলের নামও উল্লেখ করতে হবে
- বিকল্প:
- push-file: একটি পুশ-স্পেক, যেখানে ডিভাইসে পুশ করা উচিত সেই পাথ -এ লোকাল ফাইল নির্দিষ্ট করে। পুনরাবৃত্তি করা হতে পারে। একই রিমোট পাথে পুশ করার জন্য একাধিক ফাইল কনফিগার করা থাকলে, সবচেয়ে নতুন ফাইলটি পুশ করা হবে।
- push: (সঞ্চালনের অনুপযুক্ত) একটি পুশ-স্পেক, যা
'
/path/to/srcfile.txt->/path/to/destfile.txt' বা '/path/to/srcfile.txt->/path/to/destdir/' হিসেবে ফর্ম্যাট করা হয়। এটি একাধিকবার ব্যবহার করা যেতে পারে। এই পাথটি টেস্ট মডিউল ডিরেক্টরি বা আউট ডিরেক্টরির সাপেক্ষে হতে পারে। - post-push: সব পুশ করার চেষ্টা হয়ে যাওয়ার পরে ডিভাইসে (`
adb shell <your command>` সহ) চালানোর জন্য কমান্ড। সাধারণত, অনুমতির জন্য chmod ব্যবহার করা হয়
ক্লাসের নাম: InstallApkSetup
- ছোট নাম:install-apk
- ফাংশন: ডিভাইসের ডেস্টিনেশনে ইচ্ছামতো apk ফাইল পুশ করে
- বিকল্প:
- test-file-name: ডিভাইসে ইনস্টল করার জন্য apk-এর নাম।
- install-arg: pm install কমান্ডে পাস করার জন্য অতিরিক্ত আর্গুমেন্ট, যার মধ্যে লিডিং ড্যাশও অন্তর্ভুক্ত, যেমন “-d"। রিপিট করা হতে পারে
ক্লাসের নাম: RunCommandTargetPreparer
- ছোট নাম: run-command
- ফাংশন: টেস্ট মডিউল এক্সিকিউশনের আগে বা পরে শেল কমান্ড এক্সিকিউট করে
- বিকল্প:
- run-command:রান করানোর জন্য adb শেল কমান্ড। পুনরাবৃত্তি হতে পারে
- teardown-command:teardown ফেজ চলাকালীন চালানোর জন্য adb শেল কমান্ড। রিপিট করা হতে পারে
টেস্ট ক্লাস
টেস্ট ক্লাস হল টেস্ট চালানোর জন্য ব্যবহার করা ট্রেড ফেডারেশন ক্লাস।
<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
- ফাংশন: প্রদত্ত ডিভাইসে নেটিভ টেস্ট প্যাকেজ রান করে এমন একটি টেস্ট।
- বিকল্প:
- native-test-device-path:ডিভাইসে সেই পাথ যেখানে নেটিভ টেস্ট থাকে।
ক্লাসের নাম: InstrumentationTest
- ছোট নাম: ইনস্ট্রুমেন্টেশন
- ফাংশন: প্রদত্ত ডিভাইসে ইন্সট্রুমেন্টেশন টেস্ট প্যাকেজ রান করে এমন একটি টেস্ট
- বিকল্প:
- package:রান করানোর জন্য Android টেস্ট অ্যাপ্লিকেশনের ম্যানিফেস্ট প্যাকেজের নাম।
- class:রান করার জন্য টেস্ট ক্লাসের নাম।
- method:রান করার জন্য টেস্ট মেথডের নাম।
ক্লাসের নাম: AndroidJUnitTest
- ফাংশন: android.support.test.runner.AndroidJUnitRunner ব্যবহার করে প্রদত্ত ডিভাইসে একটি ইন্সট্রুমেন্টেশন টেস্ট প্যাকেজ রান করে এমন একটি টেস্ট ইন্সট্রুমেন্টেশন টেস্ট চালানোর এটিই প্রধান উপায়।