এই পৃষ্ঠায় বর্ণনা করা হয়েছে কীভাবে হোস্ট-চালিত একটি JUnit4-ধাঁচের ডিভাইস টেস্ট লিখতে হয়। এর মানে হলো, হারনেসের হোস্ট প্রান্তটি ডিভাইসটির বিরুদ্ধে বিভিন্ন কার্যক্রম শুরু করবে।
উল্লেখ্য যে, আমরা 'হোস্ট-সাইড' টেস্ট এবং 'হোস্ট-ড্রাইভেন' টেস্টকে কিছুটা ভিন্ন বলে মনে করি:
- হোস্ট-চালিত পরীক্ষা: এটি এমন একটি পরীক্ষা যা হোস্টে চলে এবং এক বা একাধিক ডিভাইসের সাথে যোগাযোগ করে। পরীক্ষাধীন সিস্টেম (SUT) নিজে হোস্টে থাকে না, কিন্তু হোস্ট থেকেই এটিকে পরীক্ষা করা হয়।
- হোস্ট-সাইড টেস্ট: এটি এমন একটি টেস্ট যা সম্পূর্ণরূপে হোস্টে চলে এবং শুধু হোস্টের কোনো বিষয় পরীক্ষা করে, যেমন ইউনিট টেস্ট।
ইন্সট্রুমেন্টেশন টেস্টের পরিবর্তে হোস্ট-ড্রাইভেন টেস্ট কেন তৈরি করবেন?
কিছু পরীক্ষার জন্য আপনাকে ডিভাইসের সামগ্রিক অবস্থা পরিবর্তন করার প্রয়োজন হতে পারে, যেমন রিবুট কমান্ড দেওয়া। ইন্সট্রুমেন্টেশন টেস্টের ক্ষেত্রে, একটি রিবুট ইন্সট্রুমেন্টেশন বন্ধ করে দেবে, পরীক্ষাটি আর চলতে পারবে না এবং কোনো ফলাফলও পাওয়া যাবে না।
হোস্ট-চালিত পরীক্ষাগুলি এমন অতিরিক্ত সেটআপ ধাপও চালনা করতে পারে, যার জন্য পরীক্ষার উপর নির্ভরশীল বাহ্যিক ডিভাইসগুলির সাথে মিথস্ক্রিয়ার প্রয়োজন হয়।
একটি হোস্ট-ড্রাইভেন টেস্ট এই ব্যবহারের ক্ষেত্রগুলো সামলাতে পারে এবং আরও বেশি সিনারিও ব্যবহার করে ডিভাইসটির উন্নত পরীক্ষার সুযোগ করে দেয়। আপনি যদি সেই পরিস্থিতিতে থাকেন, তবে একটি হোস্ট-ড্রাইভেন টেস্ট লেখাই সবচেয়ে যুক্তিযুক্ত।
TF-এ হোস্ট-ড্রাইভেন টেস্ট কীভাবে লেখা হয়?
এখানে একটি নমুনা দেওয়া হলো:
@RunWith(DeviceJUnit4ClassRunner.class)
public class SampleHostJUnit4DeviceTest extends BaseHostJUnit4Test {
@Before
public void setUp() throws Exception {
// Some setup
}
@Test
public void testCheckWeHaveDevice() throws Exception {
Assert.assertNotNull(getDevice());
}
}
ট্রেড ফেডারেশনে হোস্ট-চালিত টেস্টগুলো DeviceJUnit4ClassRunner JUnit4 টেস্ট রানার দ্বারা পরিচালিত হয়। টেস্ট ক্লাসটির সামগ্রিক কাঠামো একটি সাধারণ JUnit4 টেস্টের মতোই:
-
@BeforeClass -
@Before -
@Test -
@After -
@AfterClass -
Assume,Assert
BaseHostJunit4Test-কে এক্সটেন্ড করার মাধ্যমে নিম্নলিখিত দরকারি টেস্টিং ইউটিলিটি এপিআইগুলো ইনহেরিট করা যায়:
-
installPackage: লক্ষ্য ডিভাইসে একটি APK ইনস্টল করার অনুমতি দেয়। -
installPackageAsUser: এর মাধ্যমে টার্গেট ডিভাইসে একজন ব্যবহারকারী হিসেবে একটি APK ইনস্টল করা যায়। -
uninstallPackage: একটি APK আনইনস্টল করার অনুমতি দেয়। -
isPackageInstalled: কোনো প্যাকেজ ইনস্টল করা আছে কি না, তা যাচাই করুন। -
hasDeviceFeature: ডিভাইসটি কোনো একটি ফিচার সমর্থন করে কি না, তা যাচাই করুন। (pm list features) -
runDeviceTests(DeviceTestRunOptions options): DeviceTestRunOptions ব্যবহার করে একটি টার্গেট ডিভাইসের বিরুদ্ধে ইন্সট্রুমেন্টেশন টেস্ট চালান, যা সমস্ত সম্ভাব্য অপশন পরিচালনা করে।
ট্রেডফেড ডিভাইস অবজেক্টটিতেও অ্যাক্সেস প্রদান করুন:
-
getDevice(): ডিভাইসটি পরিচালনা করার জন্য একটি TF ডিভাইস অবজেক্ট ফেরত দেয়। -
getBuild(): বিল্ড সম্পর্কে তথ্য পাওয়ার জন্য একটি বিল্ড ইনফো TF অবজেক্ট রিটার্ন করে। -
getAbi(): যে ABI-এর ভিত্তিতে পরীক্ষাটি চালানো হচ্ছে, তা ফেরত দেয়।
ট্রেডফেড সহায়তা: প্রতি-শ্রেণী ডিভাইস প্রস্তুতি এবং পরিষ্করণ
JUnit4-এর @BeforeClass এবং @AfterClass শুধুমাত্র স্ট্যাটিক মেথডের ক্ষেত্রে প্রযোজ্য, যার ফলে ডিভাইস-নির্দিষ্ট, এককালীন এবং ক্লাস-ভিত্তিক সেটআপ বা পরিষ্করণ করার জন্য #getDevice() হ্যান্ডলার ব্যবহার করা অসম্ভব হয়ে পড়ে। এই সমস্যা সমাধানের জন্য Tradefed অ্যানোটেশনটি ব্যবহার করুন।
- @BeforeClassWithInfo: @BeforeClass অ্যানোটেশনগুলোর আগে রান করে।
- @AfterClassWithInfo: @AfterClass অ্যানোটেশনগুলোর পরে রান করে।
@BeforeClassWithInfo
public static void beforeClassWithDevice(TestInformation testInfo) {
assertNotNull(testInfo.getDevice());
testInfo.properties().put("mytest:test-prop", "test");
}
@AfterClassWithInfo
public static void afterClassWithDevice(TestInformation testInfo) {
assertNotNull(testInfo.getDevice());
testInfo.properties().put("mytest:test-prop", "test");
}
TestInformation আপনাকে ডিভাইস ব্যবহার করতে এবং এমন প্রোপার্টি সংরক্ষণ করতে দেয় যা স্ট্যাটিক বা নন-স্ট্যাটিক স্কোপে ব্যবহার করা যায়। BaseHostJUnit4Test #getTestInformation() এর মাধ্যমে নন-স্ট্যাটিক স্কোপে TestInformation পাওয়ার সুবিধা সমর্থন করে।
আপনি যদি BaseHostJUnit4Test এক্সটেন্ড না করেন, তাহলে TestInformation অবজেক্টটি গ্রহণ করার জন্য ITestInformationReceiver ইমপ্লিমেন্ট করতে পারেন।
ট্রেডফেডে হোস্ট-ড্রাইভেন টেস্ট কীভাবে কনফিগার করবেন?
Tradefed XML কনফিগারেশন ফাইলে, HostTest রানারের মাধ্যমে হোস্ট-ড্রাইভেন টেস্টগুলো চালানো হয়।
<test class="com.android.tradefed.testtype.HostTest" >
<option name="class" value="android.sample.cts.SampleHostJUnit4DeviceTest" />
</test>