Glance birim testi API'si, görünümleri şişirmeden veya bir kullanıcı arayüzü otomatörüne ihtiyaç duymadan Glance kodunuzu test etmenize olanak tanır. Örneğin, birim testi API'si, hasContentDescriptionEqualTo veya isChecked gibi eşleştiricileri kullanarak öğelerin bir listede olup olmadığı veya kutuların işaretlenip işaretlenmediği gibi koşulları doğrulamanıza olanak tanır.
Bu API hafiftir ve daha az kurulum gerektirir. Bu sayede, widget'ınızın her bir parçasını geliştirirken test odaklı geliştirme yapabilir ve kodun yeniden kullanımını iyileştirmek için bunları düzenleyebilirsiniz.
Kurulum
Birim testi kitaplığını kullanmak için gereken bağımlılıklar aşağıdaki örneklerde gösterilmiştir:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Test yapısı
Kodun yeniden kullanılabilmesi ve birim testi için composable işlevleri GlanceAppWidget sınıfının dışında düzenleyin. Test edilen birimlerinizin karmaşıklığını mümkün olduğunca azaltın.
provideComposable ile test edilebilir bir Composable'ı hedefleyebilir ve birim testlerinizi sırasıyla onNode veya onAllNodes ile bir ya da daha fazla Glance düğümünde çalıştırabilirsiniz.
private const val FAKE_HEADLINE = "EXTRA! EXTRA! READ ALL ABOUT IT!" class MyGlanceComposableTest { @Test fun myNewsItemComposable_largeSize_hasHeadline() = runGlanceAppWidgetUnitTest { // Set the composable to test provideComposable { MyNewsItemComposable(FAKE_HEADLINE) } // Perform assertions onNode(hasTestTag("headline")) .assertHasText(FAKE_HEADLINE) } @Composable fun MyNewsItemComposable(headline: String) { Row { Text( text = headline, modifier = GlanceModifier.semantics { testTag = "headline" }, ) } } }
Test için bağlamı ve boyutu ayarlama
Composable işleviniz LocalContext.current() yöntemini kullanarak bağlamı okuyorsa setContext() kullanarak bir bağlam ayarlamanız gerekir. Aksi takdirde bu adım isteğe bağlıdır.
Bağlamı sağlamak için Robolectric gibi JVM tabanlı herhangi bir Android birim testi çerçevesini kullanabilirsiniz.
Composable işleviniz LocalSize öğesine erişiyorsa testte bir composable sağlamadan önce test için istenen boyutu ayarlayın. Varsayılan boyut 349 dp x 455 dp'dir. Bu, Pixel 4 cihazda portre modunda gösterilen 5x4 widget'a eşdeğerdir.
- AppWidget'ınız
sizeMode == Singlekullanıyorsa bunu widget'ınızıninfo.xmldosyasındaminWidthveminHeightolarak ayarlayabilirsiniz. - AppWidget'ınız
sizeMode == Exactkullanıyorsa widget'ınız için bir boyut belirlemeye benzer şekilde test edilecek boyutları tespit edebilir ve widget'ınızın görünebileceği yatay ve dikey boyutları belirleyip bu boyutlar için test edebilirsiniz. - AppWidget'ınız
sizeMode == Responsivekullanıyorsa bunu,sizeModedeğerini belirtirken sağladığınız listedeki boyutlardan birine ayarlayabilirsiniz.
Test zaman aşımı için varsayılan süre 1 saniyedir ancak test altyapınız farklı bir zaman aşımı uyguluyorsa runGlanceAppWidgetUnitTest yöntemine bağımsız değişken olarak özel bir süre iletebilirsiniz.
Daha fazla bilgi ve kod örnekleri için runGlanceAppWidgetUnitTest ile ilgili referans belgelerine bakın.