আপনার পরিষেবা পরীক্ষা করুন

আপনি যদি আপনার অ্যাপের একটি উপাদান হিসাবে একটি স্থানীয় Service বাস্তবায়ন করেন, তাহলে আপনি তার আচরণ সঠিক কিনা তা যাচাই করার জন্য যন্ত্রযুক্ত পরীক্ষা তৈরি করতে পারেন।

অ্যান্ড্রয়েডএক্স টেস্ট আপনার Service বস্তুগুলিকে বিচ্ছিন্নভাবে পরীক্ষা করার জন্য একটি API প্রদান করে। ServiceTestRule ক্লাস হল একটি JUnit 4 নিয়ম যা আপনার ইউনিট পরীক্ষা পদ্ধতিগুলি চালানোর আগে আপনার পরিষেবা শুরু করে এবং পরীক্ষাগুলি সম্পূর্ণ হওয়ার পরে পরিষেবাটি বন্ধ করে দেয়। JUnit 4 নিয়ম সম্পর্কে আরও জানতে, JUnit ডকুমেন্টেশন দেখুন।

আপনার পরীক্ষার পরিবেশ সেট আপ করুন

পরিষেবার জন্য আপনার ইন্টিগ্রেশন পরীক্ষা তৈরি করার আগে, AndroidX টেস্টের জন্য সেট আপ প্রকল্পে বর্ণিত যন্ত্রযুক্ত পরীক্ষার জন্য আপনার প্রকল্পটি কনফিগার করা নিশ্চিত করুন।

পরিষেবাগুলির জন্য একটি ইন্টিগ্রেশন পরীক্ষা তৈরি করুন৷

আপনার ইন্টিগ্রেশন পরীক্ষা একটি JUnit 4 পরীক্ষার ক্লাস হিসাবে লেখা উচিত। JUnit 4 পরীক্ষার ক্লাস তৈরি করা এবং JUnit 4 দাবী পদ্ধতি ব্যবহার করার বিষয়ে আরও জানতে, একটি যন্ত্রযুক্ত পরীক্ষার ক্লাস তৈরি করুন দেখুন।

@Rule টীকা ব্যবহার করে আপনার পরীক্ষায় একটি ServiceTestRule উদাহরণ তৈরি করুন।

কোটলিন

@get:Rule
val serviceRule = ServiceTestRule()

জাভা

@Rule
public final ServiceTestRule serviceRule = new ServiceTestRule();

নিম্নলিখিত উদাহরণটি দেখায় যে আপনি কীভাবে একটি পরিষেবার জন্য একটি ইন্টিগ্রেশন পরীক্ষা বাস্তবায়ন করতে পারেন। পরীক্ষা পদ্ধতি testWithBoundService() যাচাই করে যে অ্যাপটি একটি স্থানীয় পরিষেবার সাথে সফলভাবে আবদ্ধ হয়েছে এবং পরিষেবা ইন্টারফেসটি সঠিকভাবে আচরণ করছে।

কোটলিন

@Test
@Throws(TimeoutException::class)
fun testWithBoundService() {
  // Create the service Intent.
  val serviceIntent = Intent(
      ApplicationProvider.getApplicationContext<Context>(),
      LocalService::class.java
  ).apply {
    // Data can be passed to the service via the Intent.
    putExtra(SEED_KEY, 42L)
  }

  // Bind the service and grab a reference to the binder.
  val binder: IBinder = serviceRule.bindService(serviceIntent)

  // Get the reference to the service, or you can call
  // public methods on the binder directly.
  val service: LocalService = (binder as LocalService.LocalBinder).getService()

  // Verify that the service is working correctly.
  assertThat(service.getRandomInt(), `is`(any(Int::class.java)))
}

জাভা

@Test
public void testWithBoundService() throws TimeoutException {
  // Create the service Intent.
  Intent serviceIntent =
      new Intent(ApplicationProvider.getApplicationContext(),
        LocalService.class);

  // Data can be passed to the service via the Intent.
  serviceIntent.putExtra(LocalService.SEED_KEY, 42L);

  // Bind the service and grab a reference to the binder.
  IBinder binder = serviceRule.bindService(serviceIntent);

  // Get the reference to the service, or you can call
  // public methods on the binder directly.
  LocalService service =
      ((LocalService.LocalBinder) binder).getService();

  // Verify that the service is working correctly.
  assertThat(service.getRandomInt()).isAssignableTo(Integer.class);
}

অতিরিক্ত সম্পদ

এই বিষয় সম্পর্কে আরও জানতে, নিম্নলিখিত অতিরিক্ত সংস্থানগুলির সাথে পরামর্শ করুন৷

নমুনা