A API de teste de unidade do Resumo permite testar o código do Resumo sem inflar visualizações
ou precisar de um UI Automator. Por exemplo, a API de teste de unidade permite verificar
condições, como se os elementos estão em uma lista ou se as caixas foram
marcadas, usando correspondentes como hasContentDescriptionEqualTo ou isChecked.
Essa API é leve e requer menos configuração, para que você possa realizar o desenvolvimento orientado por testes ao desenvolver partes individuais do widget e organizá-las para melhorar a reutilização do código.
Configuração
As dependências necessárias para usar a biblioteca de testes de unidade são mostradas nos exemplos a seguir:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Estrutura do teste
Organize funções combináveis fora da classe GlanceAppWidget para permitir
a reutilização de código e testes de unidade. Reduza ao máximo a complexidade das unidades em teste.
É possível segmentar um elemento combinável de teste com provideComposable e executar os testes
unitários em um ou vários nós do Resumo com onNode ou onAllNodes,
respectivamente.
private const val FAKE_HEADLINE = "EXTRA! EXTRA! READ ALL ABOUT IT!" class MyGlanceComposableTest { @Test fun myNewsItemComposable_largeSize_hasHeadline() = runGlanceAppWidgetUnitTest { // Set the composable to test provideComposable { MyNewsItemComposable(FAKE_HEADLINE) } // Perform assertions onNode(hasTestTag("headline")) .assertHasText(FAKE_HEADLINE) } @Composable fun MyNewsItemComposable(headline: String) { Row { Text( text = headline, modifier = GlanceModifier.semantics { testTag = "headline" }, ) } } }
Definir o contexto e o tamanho do teste
Se a função combinável ler o contexto usando o método LocalContext.current(), defina um contexto usando setContext(). Caso contrário, esta etapa é
opcional.
É possível usar qualquer framework de teste de unidade do Android baseado em JVM, como o Robolectric, para fornecer o contexto.
Se a função combinável acessar LocalSize, defina o tamanho pretendido
para o teste antes de fornecer um elemento combinável. O tamanho padrão é
349.dp x 455.dp, que equivale a um widget 5x4 mostrado em um dispositivo Pixel 4
no modo retrato.
- Se o AppWidget usar
sizeMode == Single, defina comominWidtheminHeightno arquivoinfo.xmldo widget. - Se o AppWidget usar
sizeMode == Exact, será possível identificar os tamanhos para teste de maneira semelhante a como você determina um tamanho para o widget e identifica os tamanhos de paisagem e retrato em que o widget pode aparecer e testar para eles. - Se o AppWidget usar
sizeMode == Responsive, você poderá definir um dos tamanhos da lista fornecida ao especificar osizeMode.
A duração padrão de um tempo limite de teste é de 1 segundo, mas é possível transmitir uma duração
personalizada como um argumento para o método runGlanceAppWidgetUnitTest se a infraestrutura de teste
aplicar um tempo limite diferente.
Para mais informações e exemplos de código, consulte a documentação de referência de
runGlanceAppWidgetUnitTest.