Bir Bakışta ile birim testi

Glance unit test API'si, görünümleri şişirmeden Glance kodunuzu test etmenizi sağlar veya kullanıcı arayüzü otomatikleştiricisi gerekiyor. Örneğin, birim test API'si, uygulamanızın öğelerin listede olup olmadığı veya kutuların hasContentDescriptionEqualTo veya isChecked gibi eşleştiriciler kullanarak kontrol edilir.

Bu API hafiftir ve daha az kurulum gerektirir, böylece test odaklı olarak gerçekleştirebilirsiniz widget'ınızın bağımsız parçalarını geliştirip bunları özelleştirerek kodların yeniden kullanımını iyileştirir.

Kurulum

Birim test kitaplığını kullanmak için gereken bağımlılıklar şu örneklere bakabilirsiniz:

// 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ı

Etkinleştirmek için GlanceAppWidget sınıfının dışında composable işlevleri düzenleyin kod yeniden kullanımı ve birim testi. Teste tabi olan birimlerinizin karmaşıklığını mümkün olduğunca çok şey katı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 fonksiyonunuz LocalContext.current() kullanarak bağlamı okuyorsa yöntemini kullanmak için LocalContext.current() yöntemini kullanarak bir bağlam ayarlamanız gerekir. Aksi takdirde bu adım isteğe bağlıdır.

Roboletric gibi JVM tabanlı herhangi bir Android birim testi çerçevesini kullanarak bağlama sahip olur.

composable işleviniz LocalSize işlevine erişiyorsa amaçlanan boyutu ayarlayın teste tabi tutulması gerekir. Varsayılan boyut 349.dp x 455.dp (Pixel 4 cihazda gösterilen 5x4 widget'a eşdeğerdir) bir arka plan rengi.

  • AppWidget'ınız sizeMode == Single kullanıyorsa bunu Widget'ınızın info.xml dosyasında minWidth ve minHeight.
  • AppWidget'ınız sizeMode == Exact kullanıyorsa boyutları tanımlayarak Widget'ınız için boyut belirlediğiniz ve bu adımların widget'ınızın görünebileceği yatay ve dikey boyutları belirleyip test edin. optimize edebilirsiniz.
  • AppWidget'ınız sizeMode == Responsive kullanıyorsa bunu şunlardan birine ayarlayabilirsiniz: sizeMode belirtirken sağladığınız listedeki boyutları kullanın.

Test zaman aşımı için varsayılan süre 1 saniyedir, ancak özel bir zaman aşımı süresi testiniz varsa runGlanceAppWidgetUnitTest yöntemi için bağımsız değişken olarak farklı bir zaman aşımı süresi uygulanır.

Daha fazla bilgi ve kod örnekleri için şuraya bakın: runGlanceAppWidgetUnitTest.