Glance unit test API'si, görünümleri şişirmeden veya kullanıcı arayüzü otomatikleştiriciye ihtiyaç duymadan Glance kodunuzu test etmenize olanak tanır. Örneğin, birim test API'si hasContentDescriptionEqualTo
ya da isChecked
gibi eşleştiriciler kullanarak öğelerin listede olup olmadığı veya kutuların işaretli olup olmadığı gibi koşulları doğrulamanızı sağlar.
Bu API hafiftir ve daha az kurulum gerektirir. Bu sayede, widget'ınızın ayrı parçalarını geliştirirken ve kodunuzun yeniden kullanımını iyileştirmek için bunları düzenlerken teste dayalı geliştirme gerçekleştirebilirsiniz.
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.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Test yapısı
Kodun yeniden kullanılmasını ve birim testini etkinleştirmek için GlanceAppWidget
sınıfının dışında composable işlevleri düzenleyin. Test edilen birimlerinizin karmaşıklığını mümkün olduğunca azaltın.
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
Test için bağlamı ve boyutu ayarlayın
composable işleviniz, LocalContext.current()
yöntemini kullanarak bağlamı okuyorsa LocalContext.current()
yöntemini kullanarak bir bağlam ayarlamanız gerekir.
Aksi takdirde bu adım isteğe bağlıdır.
Bağlam sağlamak için Roboletric gibi JVM tabanlı herhangi bir Android birim testi çerçevesini kullanabilirsiniz.
composable işleviniz LocalSize
işlevine erişiyorsa testte bir composable sağlamadan önce test için amaçlanan boyutu ayarlayın. Varsayılan boyut 349.dp x 455.dp'dir. Bu boyut, Pixel 4 cihazda dikey modda gösterilen 5x4 widget'a eşdeğerdir.
- AppWidget'ınız
sizeMode == Single
kullanıyorsa bunu widget'ınızıninfo.xml
dosyasındaminWidth
veminHeight
olarak ayarlayabilirsiniz. - AppWidget'ınız
sizeMode == Exact
kullanıyorsa Widget'ınız için boyut belirlemeye benzer şekilde test edilecek boyutları tanımlayabilir ve widget'ınızın görünebileceği yatay ve dikey boyutları belirleyip test edebilirsiniz. - AppWidget'ınız
sizeMode == Responsive
kullanıyorsa bunu,sizeMode
öğesini 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 bir özel süre aktarabilirsiniz.
Daha fazla bilgi ve kod örnekleri için runGlanceAppWidgetUnitTest
referans belgelerine göz atın.