AndroidX Testi ile JUnit4 kuralları

AndroidX Test, AndroidJUnitRunner ile kullanılacak bir JUnit kuralı grubu içerir. JUnit kuralları daha fazla esneklik sağlar ve testlerde gereken standart kodu azaltır. Örneğin, belirli bir etkinliği başlatmak için kullanılabilirler.

Etkinlik Senaryo Kuralı

Bu kural, tek bir etkinliğin işlevsel test edilmesini sağlar. Kural, seçilen etkinliği @Test ek açıklamasıyla her testten ve @Before ek açıklaması bulunan herhangi bir yöntemden önce başlatır. Kural, test tamamlandıktan ve @After ek açıklamasına sahip tüm yöntemler bittikten sonra etkinliği sonlandırır. Test mantığınızda belirtilen etkinliğe erişmek için ActivityScenarioRule.getScenario().onActivity() öğesine çalıştırılabilecek bir geri çağırma sağlayın.

Aşağıdaki kod snippet'i, ActivityScenarioRule öğesini test mantığınıza nasıl ekleyeceğinizi göstermektedir:

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.
   }
}

Java


public class MyClassTest {
    @Rule
    public ActivityScenarioRule<MyClass> activityRule =
            new ActivityScenarioRule(MyClass.class);

    @Test
    public void myClassMethod_ReturnsTrue() { ... }
}

HizmetTestRule

Bu kural, hizmetinizin testlerden önce başlatılması, test öncesinde ve sonrasında kapatılması için basitleştirilmiş bir mekanizma sağlar. Hizmeti başlatabilir veya yardımcı yöntemlerden biriyle bağlayabilirsiniz. Test tamamlandıktan ve @After ek açıklaması bulunan yöntemler tamamlandıktan sonra otomatik olarak durur veya bağlantısı kaldırılır.

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()
  }
}

Java


@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();
    }
}

Ek kaynaklar

Android testlerinde JUnit kurallarını kullanma hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın.

Dokümanlar

Sana Özel

  • BasicSample: ActivityScenarioRule basit kullanımıdır.