AndroidX Test-এ JUnit নিয়মের একটি সেট অন্তর্ভুক্ত থাকে যা AndroidJUnitRunner-এর সাথে ব্যবহার করা হয়। JUnit নিয়ম আরও নমনীয়তা প্রদান করে এবং টেস্টে প্রয়োজনীয় বয়লারপ্লেট কোড কমায়। যেমন, নির্দিষ্ট কোনও অ্যাক্টিভিটি শুরু করতে এটি ব্যবহার করা যেতে পারে।
ActivityScenarioRule
এই নিয়মটি একটি অ্যাক্টিভিটির ফাংশনাল টেস্টিং প্রদান করে। নিয়মটি @Test দিয়ে অ্যানোটেট করা প্রতিটি টেস্টের আগে এবং @Before দিয়ে অ্যানোটেট করা প্রতিটি পদ্ধতির আগে বেছে নেওয়া অ্যাক্টিভিটি লঞ্চ করে। টেস্ট সম্পূর্ণ হওয়ার পরে এবং @After-এর মাধ্যমে অ্যানোটেট করা সব পদ্ধতি শেষ হওয়ার পরে
নিয়মটি অ্যাক্টিভিটি বন্ধ করে দেয়। আপনার টেস্ট লজিকে প্রদত্ত অ্যাক্টিভিটি অ্যাক্সেস করতে, ActivityScenarioRule.getScenario().onActivity()-এ কলব্যাক রানএবেল প্রদান করুন।
নিচে দেওয়া কোড স্নিপেট থেকে বোঝা যাবে যে কীভাবে আপনার টেস্টিং লজিকে
ActivityScenarioRule অন্তর্ভুক্ত করবেন:
Kotlin
@RunWith(AndroidJUnit4::class.java) @LargeTest class MyClassTest { @get:Rule val activityRule = ActivityScenarioRule(MyClass::class.java) @Test fun myClassMethod_ReturnsTrue() { activityRule.scenario.onActivity { … } // Optionally, access the activity. } }
জাভা
public class MyClassTest { @Rule public ActivityScenarioRule<MyClass> activityRule = new ActivityScenarioRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
ServiceTestRule
এই নিয়মটি টেস্টের আগে আপনার পরিষেবা চালু করার এবং আগে ও পরে এটি বন্ধ করার জন্য একটি সরলীকৃত মেকানিজম প্রদান করে। আপনি কোনও একটি সহায়ক পদ্ধতির মাধ্যমে
পরিষেবা শুরু বা বাইন্ড করতে পারবেন। টেস্ট সম্পূর্ণ হওয়ার পরে এবং @After-এর সাথে অ্যানোটেট করা যেকোনও পদ্ধতি শেষ হওয়ার পরে
এটি অটোমেটিক বন্ধ বা আনবাইন্ড হয়ে যায়।
Kotlin
@RunWith(AndroidJUnit4::class.java) @MediumTest class MyServiceTest { @get:Rule val serviceRule = ServiceTestRule() @Test fun testWithStartedService() { serviceRule.startService( Intent(ApplicationProvider.getApplicationContext<Context>(), MyService::class.java)) // Add your test code here. } @Test fun testWithBoundService() { val binder = serviceRule.bindService( Intent(ApplicationProvider.getApplicationContext(), MyService::class.java)) val service = (binder as MyService.LocalBinder).service assertThat(service.doSomethingToReturnTrue()).isTrue() } }
জাভা
@RunWith(AndroidJUnit4.class) @MediumTest public class MyServiceTest { @Rule public final ServiceTestRule serviceRule = new ServiceTestRule(); @Test public void testWithStartedService() { serviceRule.startService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); // Add your test code here. } @Test public void testWithBoundService() { IBinder binder = serviceRule.bindService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); MyService service = ((MyService.LocalBinder) binder).getService(); assertThat(service.doSomethingToReturnTrue()).isTrue(); } }
অতিরিক্ত রিসোর্স
Android টেস্টে JUnit নিয়ম ব্যবহার করার ব্যাপারে আরও জানতে, নিম্নলিখিত রিসোর্স দেখুন।
ডকুমেন্টেশন
- ফ্র্যাগমেন্ট আলাদাভাবে পরীক্ষা করতে, আপনার ফ্র্যাগমেন্ট পরীক্ষা করুন গাইড।
- Compose-এর মাধ্যমে তৈরি করা UI টেস্ট করতে, আপনার Compose লেআউট টেস্ট করা।
নমুনা
- BasicSample:
ActivityScenarioRule-এর সাধারণ ব্যবহার।