A API de teste de unidade do Glance permite testar o código do Resumo sem aumentar as visualizações
ou precisar de um Automator de interface. Por exemplo, a API de teste de unidade permite verificar
condições, por exemplo, se os elementos estão em uma lista ou se caixas foram
está marcada, usando correspondentes como hasContentDescriptionEqualTo
ou isChecked
.
Essa API é leve e requer menos configuração para que você possa executar à medida que desenvolve partes individuais do widget e as organiza para e melhorar a reutilização de código.
Configurar
As dependências necessárias para usar a biblioteca de testes de unidade são mostradas no exemplos a seguir:
// 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.
Estrutura do teste
Organize funções combináveis fora da classe GlanceAppWidget
para ativar
reutilização de código e teste de unidade. Reduza a complexidade das unidades em teste conforme
o máximo possível.
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)
}
}
Definir o contexto e o tamanho do teste
Se a função combinável ler o contexto usando LocalContext.current()
método, defina um contexto usando o método LocalContext.current()
.
Caso contrário, esta etapa é opcional.
Use qualquer framework de teste de unidade do Android baseado em JVM, como o Roboletric, para 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 nele. O tamanho padrão é
349 dp x 455 dp, que é equivalente ao widget de 5 x 4 mostrado em um dispositivo Pixel 4
no modo retrato.
- Se o AppWidget usa
sizeMode == Single
, defina-o como ominWidth
eminHeight
no arquivoinfo.xml
do widget. - Se o AppWidget usa
sizeMode == Exact
, é possível identificar os tamanhos para teste de maneira semelhante a como você determina um tamanho para seu widget e identificar os tamanhos dos modos paisagem e retrato em que o widget pode aparecer e testar para eles. - Se o AppWidget usa
sizeMode == Responsive
, defina-o como uma das seguintes opções: os tamanhos da lista fornecida ao especificar osizeMode
.
A duração padrão do tempo limite de um teste é de 1 segundo, mas é possível transmitir um valor
de duração como argumento para o método runGlanceAppWidgetUnitTest
se o
do Google Cloud aplica um tempo limite diferente.
Para mais informações e exemplos de código, consulte a documentação de referência da
runGlanceAppWidgetUnitTest