প্রথমে developer.android.com-এ আপনার অ্যাপ পরীক্ষা করুন । প্ল্যাটফর্ম টেস্টিংয়ে ইন্সট্রুমেন্টেশন পরীক্ষাগুলি কীভাবে ব্যবহার করা হয় তার মধ্যে কিছু পার্থক্য রয়েছে তা নোট করুন।
সংক্ষেপে, একটি ইন্সট্রুমেন্টেশন পরীক্ষা am instrument
কমান্ডের মাধ্যমে চালু করা একটি বিশেষ পরীক্ষা কার্যকর করার পরিবেশ প্রদান করে, যেখানে লক্ষ্যযুক্ত অ্যাপ্লিকেশন প্রক্রিয়াটি পুনঃসূচনা করা হয় এবং প্রাথমিক অ্যাপ্লিকেশন প্রসঙ্গের সাথে শুরু করা হয়, এবং অ্যাপ্লিকেশন প্রক্রিয়া VM-এর ভিতরে একটি ইন্সট্রুমেন্টেশন থ্রেড শুরু হয়। আপনার পরীক্ষার কোডটি এই ইন্সট্রুমেন্টেশন থ্রেডে কার্যকর করা শুরু করে এবং একটি Instrumentation
ইন্সট্যান্স প্রদান করা হয় যা পরীক্ষার অধীনে আবেদন প্রক্রিয়াটি ম্যানিপুলেট করার জন্য অ্যাপ্লিকেশনের প্রসঙ্গ এবং APIগুলিতে অ্যাক্সেস প্রদান করে।
মূল ধারণা
- অ্যাপ্লিকেশন প্যাকেজ ম্যানিফেস্টের
<manifest>
ট্যাগের অধীনে একটি<instrumentation>
ট্যাগ সহ একটি অ্যাপ্লিকেশন প্যাকেজে একটি ইন্সট্রুমেন্টেশন ঘোষণা করতে হবে। - একটি অ্যাপ্লিকেশন প্যাকেজ ম্যানিফেস্টে প্রযুক্তিগতভাবে একাধিক
<instrumentation>
ট্যাগ থাকতে পারে, যদিও এটি সাধারণত এই ফ্যাশনে ব্যবহৃত হয় না। - প্রতিটি
<instrumentation>
থাকতে হবে:- একটি
android:name
অ্যাট্রিবিউট: এটি টেস্ট অ্যাপ্লিকেশানে অন্তর্ভুক্তInstrumentation
একটি সাবক্লাসের নাম হওয়া উচিত, যা সাধারণত ব্যবহৃত হচ্ছে টেস্ট রানার, যেমন:android.support.test.runner.AndroidJUnitRunner
- একটি
android:targetPackage
বৈশিষ্ট্য অবশ্যই সংজ্ঞায়িত করা উচিত। এর মান পরীক্ষার অধীনে অ্যাপ্লিকেশন প্যাকেজ সেট করা উচিত.
- একটি
পদক্ষেপের সারাংশ
নীচে ফ্রেমওয়ার্ক পরিষেবাগুলির বিরুদ্ধে হারমেটিক পরীক্ষার জন্য সাধারণ গন্তব্যগুলি রয়েছে:
frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests
আপনি যদি আপনার উপাদানের জন্য একটি নতুন ইন্সট্রুমেন্টেশন মডিউল যোগ করেন, দেখুন
আপনি যদি উপরের অবস্থানগুলির মধ্যে একটিতে পরীক্ষা যোগ করেন তাহলে বিদ্যমান কনভেনশন অনুসরণ করুন। আপনি যদি একটি নতুন পরীক্ষা মডিউল সেট আপ করে থাকেন, তাহলে অনুগ্রহ করে উপরের অবস্থানগুলির একটিতে
AndroidManifest.xml
এবংAndroid.mk
এর সেটআপ অনুসরণ করুনএকটি উদাহরণের জন্য ফ্রেমওয়ার্ক/বেস/কোর/টেস্ট/কোরটেস্ট/ দেখুন। নোট করুন এই লাইনগুলি অতিরিক্ত অ্যাপ ইনস্টল করে:
<option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
আপনার পরীক্ষাকে
@SmallTest
,@MediumTest
বা@LargeTest
হিসাবে চিহ্নিত করতে ভুলবেন নাm দিয়ে পরীক্ষা মডিউল তৈরি করুন, যেমন:
m FrameworksCoreTests
পরীক্ষা চালান:
সবচেয়ে সহজ সমাধান হল Atest ব্যবহার করা:
atest FrameworksCoreTests
অথবা আরও জটিল পরীক্ষার জন্য, ট্রেড ফেডারেশন টেস্ট হারনেস ব্যবহার করুন:
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
ট্রেডফেড ব্যবহার না করলে, ম্যানুয়ালি ইনস্টল করুন এবং পরীক্ষা চালান:
- জেনারেট করা apk ইনস্টল করুন:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
বিভিন্ন বিকল্পের সাথে পরীক্ষা চালান:
apk-এ সমস্ত পরীক্ষা
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
একটি নির্দিষ্ট জাভা প্যাকেজের অধীনে সমস্ত পরীক্ষা
adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
একটি নির্দিষ্ট শ্রেণীর অধীনে সমস্ত পরীক্ষা
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
একটি নির্দিষ্ট পরীক্ষা পদ্ধতি
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
আপনার পরীক্ষা JUnit
API ব্যবহার করে পাস বা ব্যর্থ হওয়ার বিষয়ে একটি স্পষ্ট দাবি করতে পারে; উপরন্তু, কোনো ধরা পড়া ব্যতিক্রমগুলি কার্যকরী ব্যর্থতার কারণ হবে।
পারফরম্যান্স মেট্রিক্স নির্গত করতে, আপনার পরীক্ষার কোড কী-মান জোড়ার একটি তালিকা পাঠাতে Instrumentation#sendStatus
কল করতে পারে। এটা মনে রাখা গুরুত্বপূর্ণ যে:
- মেট্রিক্স পূর্ণসংখ্যা বা ভাসমান বিন্দু হতে পারে
- কোনো অ-সংখ্যাসূচক মান বাতিল করা হবে
- আপনার পরীক্ষার apk হয় কার্যকরী পরীক্ষা বা মেট্রিক্স পরীক্ষা হতে পারে, তবে উভয়ের মিশ্রণ বর্তমানে সমর্থিত নয়