L'API Glance unit test ti consente di testare il codice Glance senza aumentare il numero di visualizzazioni
o richiedere un automatizzatore UI. Ad esempio, l'API di test di unità ti consente di verificare condizioni, ad esempio se gli elementi sono in un elenco o se le caselle sono state selezionate, utilizzando i corrispondenti come hasContentDescriptionEqualTo
o isChecked
.
Questa API è leggera e richiede meno configurazioni, quindi puoi eseguire uno sviluppo guidato da test 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 di unità sono mostrate nei 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
Organizzare le funzioni componibili al di fuori della classe GlanceAppWidget
per abilitare
il riutilizzo del codice e il test delle unità. Riduci al massimo la complessità delle unità testate.
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 del test
Se la funzione componibile legge il contesto utilizzando il metodo 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, come Roboletric, per fornire il contesto.
Se la funzione componibile accede a LocalSize
, imposta le dimensioni previste per il test prima di fornire un componibile nel test. Le dimensioni predefinite sono
349 dp x 455 dp, che corrispondono a un widget 5 x 4 visualizzato su un dispositivo Pixel 4
in modalità Ritratto.
- 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 da testare in modo simile a come determini una dimensione per il widget, nonché identificare le dimensioni orizzontali e verticali su cui il widget potrebbe essere visualizzato e testarle. - Se il tuo AppWidget utilizza
sizeMode == Responsive
, puoi impostarlo su una delle dimensioni dell'elenco che fornisci quando specifichisizeMode
.
La durata predefinita di un timeout di test è di 1 secondo, ma puoi passare una durata personalizzata come argomento al metodo runGlanceAppWidgetUnitTest
se l'infrastruttura di test applica un timeout diverso.
Per ulteriori informazioni ed esempi di codice, consulta la documentazione di riferimento per
runGlanceAppWidgetUnitTest
.