Bir Bakışta ile birim testi

Glance birim testi API'si, Glance kodunuzu görüntüleme sayısını artırmadan veya kullanıcı arayüzü otomasyon aracına ihtiyaç duymadan test etmenize olanak tanır. Örneğin, birim testi API'si, hasContentDescriptionEqualTo veya isChecked gibi eşleyiciler 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 ayrı parçalarını geliştirirken ve kod yeniden kullanımını iyileştirmek için bunları düzenlerken test odaklı geliştirme yapabilirsiniz.

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ı

Kod yeniden kullanımını ve birim testini etkinleştirmek için birleştirilebilir 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.

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

Testin bağlamını ve boyutunu ayarlama

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

Birleştirilebilir işleviniz LocalSize'e erişiyorsa testte bir birleştirilebilir öğe 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'iniz sizeMode == Single kullanıyorsa widget'ınızın info.xml dosyasında bunu minWidth ve minHeight olarak ayarlayabilirsiniz.
  • AppWidget'iniz sizeMode == Exact kullanıyorsa test edilecek boyutları, widget'ınız için boyut belirleme işlemine benzer şekilde belirleyebilir ve widget'ınızın görünebileceği yatay ve dikey boyutları tanımlayıp bunları test edebilirsiniz.
  • AppWidget'iniz sizeMode == Responsive kullanıyorsa bunu, sizeMode'ü 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 özel bir süreyi bağımsız değişken olarak iletebilirsiniz.

Daha fazla bilgi ve kod örnekleri için runGlanceAppWidgetUnitTest referans dokümanlarına bakın.