Test amaçlı içerik sağlayıcıları

Verileri depolamak ve almak veya diğer uygulamaların da verilere erişmesini sağlamak için sağlayıcınızı test ederek beklenmedik bir şekilde davranmıyor. Bu derste, herkese açık ve hassas ve aynı zamanda gizlilik içinde bulunduğunuz sağlayıcılar için de geçerlidir .

İçerik sağlayıcılar için entegrasyon testleri oluşturma

İçerik sağlayıcılar, gerçek kullanıcı verilerine erişmenize olanak tanır. Bu nedenle, içerik sağlayıcıyı izole bir test ortamında test etmeniz gerekir. Bu yalnızca test durumu. Ayrıca, testlerinizin gerçek kullanıcı verilerini değiştirmediği anlamına da gelir. Örneğin, olduğu için başarısız olan bir test yazmaktan kaçınmalısınız çünkü olup olmadığını kontrol edin. Benzer şekilde, testinizde gerçek iletişim bilgileridir.

İçerik sağlayıcınızı tek başına test etmek için ProviderTestCase2 sınıfını kullanır. Bu sınıf, aşağıdakiler gibi Android sahte nesne sınıflarını kullanmanıza olanak tanır: Dosyaya ve diğer dosyalara erişmek için IsolatedContext ve MockContentResolver ve kullanıcı verileri üzerinde herhangi bir etkisi yoktur.

Entegrasyon testiniz, JUnit 4 test sınıfı olarak yazılmalıdır. Daha fazla bilgi edinmek için JUnit 4 test sınıfları oluşturma ve JUnit 4 onaylarını kullanma hakkında bilgi için Create a Yerel Ünite Test Sınıfı.

İçerik sağlayıcınız için entegrasyon testi oluşturmak üzere şunları yapmanız gerekir: için şu adımları izleyin:

  1. Test sınıfınızı ProviderTestCase2 dersinin alt sınıfı olarak oluşturun.
  2. AndroidX Test'in sağladığı AndroidJUnitRunner sınıfını belirtin. varsayılan test aracınız olarak ayarlayın.
  3. ApplicationProvider sınıfından Context nesnesini ayarlayın. Bkz. aşağıdaki snippet'i inceleyebilirsiniz.

Kotlin


@Throws(Exception::class)
override fun setUp() {
  super.setUp()
  context = ApplicationProvider.getApplicationContext<Context>()
}

Java


@Override
protected void setUp() throws Exception {
  super.setUp();
  setContext(ApplicationProvider.getApplicationContext());
}

ProviderTestCase2'nin işleyiş şekli

Bir sağlayıcıyı ProviderTestCase2 alt sınıfıyla test ediyorsunuz. Bu temel sınıf AndroidTestCase uzantısını kapsar ve JUnit test çerçevesini uygulama izinlerini test etmek için Android'e özgü yöntemleri de kullanabilirsiniz. En bu sınıfın önemli bir özelliği başlatma. Bu da, test ortamına dayanıyor.

Başlatma

Başlatma işlemi, ProviderTestCase2 için oluşturucuda yapılır. alt sınıfların kendi oluşturucularını çağırdığı anlamına gelir. ProviderTestCase2 oluşturucu, dosyaya izin veren bir IsolatedContext nesnesi oluşturur ve Android sistemiyle olan diğer etkileşimleri de çıkarır. Dosya ve veritabanı işlemlerinin kendisi de aynı dizinde veya emülatörde yerel olarak anlatılır ve özel bir öneki vardır.

Ardından oluşturucu, çözümleyici olarak kullanılacak bir MockContentResolver oluşturur seçeceğim.

Son olarak, oluşturucu test edilen sağlayıcının bir örneğini oluşturur. Bu normal bir ContentProvider nesnesidir ancak tüm ortamını alır Bu nedenle bu bilgiler IsolatedContext test ortamı oluşturmaya çalışıyoruz. Test durumu sınıfında yapılan tüm testler bu izole nesneye karşı test yapıyorum.

İçerik sağlayıcılar için entegrasyon testlerini, araçlar kullanılanlarla aynı şekilde çalıştırırsınız olanak sağlar.

Neleri test edebilirsiniz?

İçerik sağlayıcıların test edilmesiyle ilgili bazı özel yönergeler aşağıda verilmiştir.

  • Çözümleyici yöntemleriyle test etme: Bir sağlayıcı örneklendirseniz bile nesne ProviderTestCase2 için her zaman adresini ziyaret edin. Böylece, sağlayıcıyı doğru zamanda aynı etkileşimi gerçekleştirmenize yardımcı olur.
  • Herkese açık bir sağlayıcıyı sözleşme olarak test etme: Sağlayıcınızın herkese açık ve diğer uygulamalar için kullanılabilir durumdaysa bunu bir sözleşme olarak test etmeniz gerekir. Aşağıda, bunun nasıl yapılacağına ilişkin bazı örnekler verilmiştir:
    • Sağlayıcınızın herkese açık olarak sunduğu sabit değerlerle test edin. Örneğin, kullanın. Bunlar her zaman sağlayıcı tarafından herkese açık şekilde tanımlanan sabit değerler olmalıdır.
    • Sağlayıcınızın sunduğu tüm URI'leri test edin. Sağlayıcınız birden fazla Her biri verilerin farklı bir yönünü ifade eden URI'lar.
    • Geçersiz URI'leri test edin. Birim testleriniz, sağlayıcınızı kasıtlı olarak hata olup olmadığını kontrol edin. İyi bir sağlayıcı tasarımı, Geçersiz URI'lar için IllegalArgumentException.
  • Standart sağlayıcı etkileşimlerini test etme: Çoğu sağlayıcı, altı adet erişim sunar. yöntemler: query(), insert(), delete(), update(), getType() ve onCreate(). Testleriniz tüm bu yöntemlerin işe yaradığını doğrulamalıdır.
  • İş mantığını test etme: İçerik sağlayıcı iş mantığını uygularsa siz test etmelisiniz. İş mantığı, geçersiz değerlerin, finansal veya finansal yinelenen öğeleri birleştirme, aritmetik hesaplamalar, eleme veya birleştirme.