L'API Glance unit test ti consente di testare il codice Glance senza aumentare il numero di visualizzazioni
o di un automatizzatore UI. Ad esempio, l'API unit test ti consente di verificare
condizioni, ad esempio se gli elementi sono in un elenco o se le caselle sono state
selezionata, utilizzando matcher come hasContentDescriptionEqualTo
o isChecked
.
Questa API è leggera e richiede meno configurazioni, pertanto puoi eseguire test guidati sviluppo man mano che sviluppi singole parti del widget e le organizzi per migliorare il riutilizzo del codice.
Configura
Le dipendenze necessarie per utilizzare la libreria di test delle unità sono mostrate in i seguenti esempi:
// 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.
Struttura del test
Organizza le funzioni componibili al di fuori della classe GlanceAppWidget
per attivarle
riutilizzo del codice e test delle unità. Riduci la complessità delle unità sottoposte a test
il più possibile.
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)
}
}
Imposta il contesto e le dimensioni per il test
Se la funzione componibile legge il contesto utilizzando LocalContext.current()
, devi impostare un contesto utilizzando il metodo LocalContext.current()
.
In caso contrario, questo passaggio è facoltativo.
Puoi utilizzare qualsiasi framework di test delle unità Android basato su JVM, ad esempio Roboletric, per forniscono il contesto.
Se la funzione componibile accede a LocalSize
, imposta la dimensione prevista
per il test prima di fornire un componibile nel test. La dimensione predefinita è
349.dp x 455.dp, che equivale a un widget 5x4 mostrato su Pixel 4.
in modalità verticale.
- Se il tuo AppWidget utilizza
sizeMode == Single
, puoi impostarlo suminWidth
eminHeight
nel fileinfo.xml
del widget. - Se il tuo AppWidget utilizza
sizeMode == Exact
, puoi identificare le dimensioni per eseguire il test in modo simile a come determinare le dimensioni del widget e Identificare le dimensioni orizzontali e verticali in cui può apparire il widget e testarlo per loro. - Se AppWidget utilizza
sizeMode == Responsive
, puoi impostarlo su uno di le dimensioni dell'elenco che fornisci quando specifichi il valoresizeMode
.
La durata predefinita di un timeout di test è di 1 secondo, ma puoi trasmettere una
come argomento per il metodo runGlanceAppWidgetUnitTest
se il tuo test
dell'infrastruttura applica un timeout diverso.
Per ulteriori informazioni ed esempi di codice, consulta la documentazione di riferimento per
runGlanceAppWidgetUnitTest