কমান্ড লাইন থেকে পরীক্ষা করুন

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

আপনি যখন Gradle বিল্ড সিস্টেম ব্যবহার করে আপনার অ্যাপ তৈরি করেন, তখন Android Gradle প্লাগইন আপনাকে কমান্ড লাইন ব্যবহার করে আপনার Gradle প্রকল্প থেকে পরীক্ষা চালাতে দেয়। আরও সূক্ষ্ম নিয়ন্ত্রণের জন্য, আপনি একটি অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) শেলের মাধ্যমে আপনার পরীক্ষা চালানো বেছে নিতে পারেন। ক্রমাগত ইন্টিগ্রেশন পরিবেশে পরীক্ষা চালানোর সময় এটি কার্যকর হতে পারে।

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

Gradle দিয়ে পরীক্ষা চালান

অ্যান্ড্রয়েড গ্রেডল প্লাগইন আপনাকে কমান্ড লাইন ব্যবহার করে আপনার গ্রেডল প্রকল্প থেকে পরীক্ষা চালাতে দেয়।

নীচের সারণীটি গ্রেডলের সাথে কীভাবে আপনার পরীক্ষা চালাতে হয় তার সংক্ষিপ্ত বিবরণ দেয়:

সারণী 1. Gradle দিয়ে আপনার পরীক্ষা চালানোর বিভিন্ন উপায়

ইউনিট পরীক্ষার ধরন চালানোর নির্দেশ পরীক্ষার ফলাফলের অবস্থান
স্থানীয় ইউনিট পরীক্ষা test কাজটি চালান:

./gradlew test
HTML পরীক্ষার ফলাফল ফাইল:
path_to_your_project / module_name /build/reports/tests/ ডিরেক্টরি।

XML পরীক্ষার ফলাফল ফাইল:
path_to_your_project / module_name /build/test-results/ ডিরেক্টরি।

যন্ত্রযুক্ত ইউনিট পরীক্ষা connectedAndroidTest টাস্কটি চালান:

./gradlew connectedAndroidTest
HTML পরীক্ষার ফলাফল ফাইল:
path_to_your_project / module_name /build/reports/androidTests/connected/ ডিরেক্টরি।

XML পরীক্ষার ফলাফল ফাইল:
path_to_your_project / module_name /build/outputs/androidTest-results/connected/ ডিরেক্টরি।

Gradle টাস্ক নামের সংক্ষিপ্ত রূপ সমর্থন করে। উদাহরণস্বরূপ, আপনি নিম্নলিখিত কমান্ডটি প্রবেশ করে connectedAndroidTest কাজটি শুরু করতে পারেন:

./gradlew cAT

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

একটি মডিউলে পরীক্ষা চালান

test এবং connectedAndroidTest কার্যগুলি আপনার প্রকল্পের প্রতিটি মডিউলে পরীক্ষা চালায়। আপনি মডিউল নাম এবং একটি কোলন (:) সহ test বা connectedAndroidTest টাস্কের প্রিফিক্সিং করে একটি নির্দিষ্ট মডিউলে পরীক্ষা চালাতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি শুধুমাত্র mylibrary মডিউলের জন্য যন্ত্রযুক্ত পরীক্ষা চালায়:

./gradlew mylibrary:connectedAndroidTest

একটি বিল্ড বৈকল্পিক পরীক্ষা চালান

test এবং connectedAndroidTest কার্যগুলি আপনার প্রকল্পের প্রতিটি বিল্ড ভেরিয়েন্টে পরীক্ষা চালায়। আপনি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে একটি নির্দিষ্ট বিল্ড বৈকল্পিক লক্ষ্য করতে পারেন:

  • স্থানীয় ইউনিট পরীক্ষার জন্য:
    ./gradlew testVariantNameUnitTest
  • যন্ত্রযুক্ত পরীক্ষার জন্য:
    ./gradlew connectedVariantNameAndroidTest

নির্দিষ্ট পরীক্ষা পদ্ধতি বা ক্লাস চালান

স্থানীয় ইউনিট পরীক্ষা চালানোর সময়, Gradle আপনাকে --tests পতাকা ব্যবহার করে নির্দিষ্ট পরীক্ষাগুলি লক্ষ্য করতে দেয়। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি নির্দিষ্ট বিল্ড বৈকল্পিকের জন্য শুধুমাত্র sampleTestMethod পরীক্ষা চালায়। --tests পতাকা ব্যবহার সম্পর্কে আরও জানতে, পরীক্ষা ফিল্টারিং- এর উপর Gradle-এর ডকুমেন্টেশন পড়ুন।


./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'

অ্যাডবি দিয়ে পরীক্ষা চালান

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

কমান্ড লাইন থেকে একটি পরীক্ষা চালানোর জন্য, আপনার ডিভাইস বা এমুলেটরে একটি কমান্ড-লাইন শেল শুরু করতে adb shell চালান। সেই শেলের ভিতরে আপনি am কমান্ড ব্যবহার করে অ্যাক্টিভিটি ম্যানেজারের সাথে ইন্টারঅ্যাক্ট করতে পারেন এবং আপনার পরীক্ষা চালানোর জন্য এর instrument সাবকমান্ড ব্যবহার করতে পারেন।

একটি শর্টকাট হিসাবে, আপনি একটি adb শেল শুরু করতে পারেন, am instrument কল করতে পারেন এবং একটি ইনপুট লাইনে কমান্ড-লাইন পতাকাগুলি নির্দিষ্ট করতে পারেন। শেলটি ডিভাইস বা এমুলেটরে খোলে, আপনার পরীক্ষা চালায়, আউটপুট তৈরি করে এবং তারপরে আপনার কম্পিউটারে কমান্ড লাইনে ফিরে আসে।

am instrument দিয়ে একটি পরীক্ষা চালানোর জন্য:

  1. আপনার প্রধান অ্যাপ্লিকেশন এবং পরীক্ষা প্যাকেজ তৈরি বা পুনর্নির্মাণ করুন।
  2. আপনার বর্তমান অ্যান্ড্রয়েড ডিভাইস বা এমুলেটরে আপনার টেস্ট প্যাকেজ এবং প্রধান অ্যাপ্লিকেশন অ্যান্ড্রয়েড প্যাকেজ ফাইল (এপিকে ফাইল) ইনস্টল করুন
  3. কমান্ড লাইনে, লিখুন:

    adb shell am instrument -w <test_package_name>/<runner_class>
    

    যেখানে <test_package_name> হল আপনার পরীক্ষার অ্যাপ্লিকেশনের Android প্যাকেজের নাম, এবং <runner_class> হল আপনার ব্যবহার করা Android টেস্ট রানার ক্লাসের নাম। অ্যান্ড্রয়েড প্যাকেজ নামটি আপনার পরীক্ষা প্যাকেজের ম্যানিফেস্ট ফাইলে ম্যানিফেস্ট উপাদানের প্যাকেজ বৈশিষ্ট্যের মান ( AndroidManifest.xml )৷

    অ্যান্ড্রয়েড টেস্ট রানার ক্লাস সাধারণত AndroidJUnitRunner হয়:

    adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
    

আপনার পরীক্ষার ফলাফল STDOUT এ প্রদর্শিত হবে।

আমি যন্ত্র পতাকা

am instrument কমান্ডের সাথে ব্যবহার করার জন্য সমস্ত পতাকার তালিকা খুঁজতে, adb shell am help চালান। নিম্নলিখিত সারণীতে কিছু গুরুত্বপূর্ণ পতাকা বর্ণনা করা হয়েছে:

টেবিল 2. গুরুত্বপূর্ণ am instrument পতাকা

পতাকা মান বর্ণনা
-w (কোনটিই নয়) ফোর্সেস am instrument ইন্সট্রুমেন্টেশনটি শেষ না হওয়া পর্যন্ত অপেক্ষা করার জন্য। পরীক্ষা শেষ না হওয়া পর্যন্ত এটি শেলটি খোলা রাখে। আপনার পরীক্ষার ফলাফল দেখতে এই পতাকা প্রয়োজন।
-r (কোনটিই নয়) আউটপুট কাঁচা বিন্যাসে ফলাফল. আপনি যখন কর্মক্ষমতা পরিমাপ সংগ্রহ করতে চান তখন এই পতাকাটি ব্যবহার করুন যাতে সেগুলি পরীক্ষার ফলাফল হিসাবে ফর্ম্যাট না হয়। এই পতাকাটি পতাকা -e perf true ( am instrument অপশনে নথিভুক্ত) বিভাগে ব্যবহারের জন্য ডিজাইন করা হয়েছে।
-e <test_options> কী-মান জোড়া হিসাবে পরীক্ষার বিকল্পগুলি প্রদান করে। am instrument টুলটি তার onCreate() পদ্ধতি ব্যবহার করে নির্দিষ্ট ইন্সট্রুমেন্টেশন ক্লাসে এগুলো পাস করে। আপনি -e <test_options> এর একাধিক ঘটনা নির্দিষ্ট করতে পারেন। কী এবং মান am instrument অপশন বিভাগে বর্ণনা করা হয়েছে। আপনি শুধুমাত্র AndroidJUnitRunner বা InstrumentationTestRunner এবং এর সাবক্লাসের সাথে এই কী-মান জোড়া ব্যবহার করতে পারেন। অন্য কোন শ্রেণীর সাথে তাদের ব্যবহার কোন প্রভাব নেই.
--no-hidden-api-checks (কোনটিই নয়) লুকানো API ব্যবহারে বিধিনিষেধ অক্ষম করে। লুকানো APIগুলি কী এবং এটি কীভাবে আপনার অ্যাপকে প্রভাবিত করতে পারে সে সম্পর্কে আরও তথ্যের জন্য, নন-SDK ইন্টারফেসে সীমাবদ্ধতা পড়ুন।

আমি উপকরণ বিকল্প

am instrument tool এই সিনট্যাক্স সহ -e পতাকা ব্যবহার করে কী-মান জোড়া আকারে AndroidJUnitRunner বা InstrumentationTestRunner এ পরীক্ষার বিকল্পগুলি পাস করে:

-e <key> <value>

কিছু কী একাধিক মান গ্রহণ করে। আপনি একটি কমা দ্বারা পৃথক করা তালিকায় একাধিক মান নির্দিষ্ট করুন৷ উদাহরণস্বরূপ, AndroidJUnitRunner এর এই আহ্বান package কী-এর জন্য একাধিক মান প্রদান করে:

adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner

নিম্নলিখিত সারণীতে কী-মান জোড়া তালিকাভুক্ত করা হয়েছে যা আপনি আপনার টেস্ট রানারের সাথে ব্যবহার করতে পারেন:

সারণি 3. -e পতাকা কী-মান জোড়া আপনার পরীক্ষা রানার ব্যবহার করার জন্য

চাবি মান বর্ণনা
package <Java_package_name> পরীক্ষা অ্যাপ্লিকেশনের প্যাকেজগুলির একটির জন্য সম্পূর্ণ যোগ্য জাভা প্যাকেজের নাম। এই প্যাকেজের নাম ব্যবহার করে এমন যেকোন টেস্ট কেস ক্লাস এক্সিকিউট করা হয়। লক্ষ্য করুন যে এটি একটি Android প্যাকেজের নাম নয়; একটি পরীক্ষা প্যাকেজের একটি একক অ্যান্ড্রয়েড প্যাকেজের নাম রয়েছে তবে এর মধ্যে বেশ কয়েকটি জাভা প্যাকেজ থাকতে পারে।
class <class_name> টেস্ট কেস ক্লাসগুলির একটির জন্য সম্পূর্ণ যোগ্য জাভা ক্লাসের নাম। শুধুমাত্র এই টেস্ট কেস ক্লাস নির্বাহ করা হয়.
<class_name> # method name একটি সম্পূর্ণ যোগ্য টেস্ট কেস ক্লাসের নাম এবং এর একটি পদ্ধতি। শুধুমাত্র এই পদ্ধতি কার্যকর করা হয়. ক্লাসের নাম এবং পদ্ধতির নামের মধ্যে হ্যাশ চিহ্ন (#) নোট করুন।
func true InstrumentationTestCase প্রসারিত সমস্ত পরীক্ষা ক্লাস চালায়।
unit true সমস্ত পরীক্ষা ক্লাস চালায় যেগুলি InstrumentationTestCase বা PerformanceTestCase হয় না
size [ small | medium | large ] আকার দ্বারা টীকা করা একটি পরীক্ষা পদ্ধতি চালায়। টীকাগুলি হল @SmallTest , @MediumTest , এবং @LargeTest
perf true PerformanceTestCase বাস্তবায়ন করে এমন সমস্ত পরীক্ষা ক্লাস চালায়। আপনি যখন এই বিকল্পটি ব্যবহার করেন, তখন am instrument জন্য -r পতাকা নির্দিষ্ট করুন যাতে আউটপুটটি কাঁচা ফর্ম্যাটে রাখা হয় এবং পরীক্ষার ফলাফল হিসাবে পুনরায় ফর্ম্যাট না হয়।
debug true ডিবাগ মোডে পরীক্ষা চালায়।
log true সমস্ত নির্দিষ্ট পরীক্ষা লোড এবং লগ করে কিন্তু সেগুলি চালায় না। পরীক্ষার তথ্য STDOUT এ প্রদর্শিত হবে। অন্যান্য ফিল্টার এবং পরীক্ষার স্পেসিফিকেশনের সমন্বয় যাচাই করতে এটি ব্যবহার করুন।
emma true একটি EMMA কোড কভারেজ বিশ্লেষণ চালায় এবং ডিভাইসে /data/<app_package>/coverage.ec এ আউটপুট লেখে। ফাইলের অবস্থান ওভাররাইড করতে, নিম্নলিখিত এন্ট্রিতে বর্ণিত coverageFile কী ব্যবহার করুন।

দ্রষ্টব্য: এই বিকল্পটির জন্য পরীক্ষার অ্যাপ্লিকেশনটির একটি EMMA-ইনস্ট্রুমেন্টেড বিল্ড প্রয়োজন, যা আপনি coverage লক্ষ্যমাত্রা দিয়ে তৈরি করতে পারেন।

coverageFile <filename> ডিভাইসে EMMA কভারেজ ফাইলের ডিফল্ট অবস্থান ওভাররাইড করে। UNIX বিন্যাসে একটি পাথ এবং ফাইলের নাম হিসাবে এই মানটি নির্দিষ্ট করুন। ডিফল্ট ফাইলের নামটি emma কী-র জন্য এন্ট্রিতে বর্ণনা করা হয়েছে।

-e পতাকা ব্যবহার করার সময়, নিম্নলিখিতগুলি সম্পর্কে সচেতন হন:

  • am instrument একটি Bundle সাথে onCreate(Bundle) আহ্বান করে যার মধ্যে কী-মান জোড়া রয়েছে।
  • package কী class কী-এর চেয়ে অগ্রাধিকার পায়। আপনি যদি একটি প্যাকেজ নির্দিষ্ট করেন এবং তারপরে সেই প্যাকেজের মধ্যে আলাদাভাবে একটি ক্লাস নির্দিষ্ট করেন, তাহলে অ্যান্ড্রয়েড প্যাকেজের সমস্ত পরীক্ষা চালায় এবং ক্লাস কী উপেক্ষা করে।
  • func কী এবং unit কী পারস্পরিক একচেটিয়া।

ব্যবহারের উদাহরণ

নিম্নলিখিত বিভাগগুলি পরীক্ষা চালানোর জন্য am instrument ব্যবহার করার উদাহরণ প্রদান করে। তারা নিম্নলিখিত কাঠামোর উপর ভিত্তি করে:

  • টেস্ট প্যাকেজটির Android প্যাকেজের নাম com.android.demo.app.tests রয়েছে।
  • দুটি যন্ত্রযুক্ত পরীক্ষার ক্লাস:
    • TestClass1 , যাতে রয়েছে পরীক্ষা পদ্ধতি testMethod1
    • TestClass2 , যাতে রয়েছে পরীক্ষা পদ্ধতি testMethod2 এবং testMethod3
  • পরীক্ষার রানার হল AndroidJUnitRunner

সম্পূর্ণ পরীক্ষা প্যাকেজ চালান

টেস্ট প্যাকেজে সমস্ত পরীক্ষা ক্লাস চালানোর জন্য, লিখুন:

adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner

একটি টেস্ট কেস ক্লাসে সমস্ত পরীক্ষা চালান

TestClass1 ক্লাসে সমস্ত পরীক্ষা চালানোর জন্য, লিখুন:

adb shell am instrument -w  \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner

পরীক্ষার একটি উপসেট নির্বাচন করুন

TestClass1 ক্লাসে এবং TestClass2testMethod3 পদ্ধতিতে সমস্ত পরীক্ষা চালানোর জন্য, লিখুন:

adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner

আপনি AndroidJUnitRunner API রেফারেন্সে আরও ব্যবহারের ক্ষেত্রে খুঁজে পেতে পারেন।