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:
- Test sınıfınızı
ProviderTestCase2
dersinin alt sınıfı olarak oluşturun. - AndroidX Test'in sağladığı
AndroidJUnitRunner
sınıfını belirtin. varsayılan test aracınız olarak ayarlayın. ApplicationProvider
sınıfındanContext
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()
veonCreate()
. 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.