Ao executar testes do lado do dispositivo (instrumentações, testes do UI Automator, etc.), os coletores do lado do host podem não ser ideais porque é difícil sincronizar a coleta de métricas com um teste em execução em um dispositivo. Por exemplo, uma captura de tela tirada de forma assíncrona provavelmente perderá a tela desejada e será inútil.
Para atender a esses casos de uso, existe uma versão do lado do dispositivo de nossos coletores e pode ser usada em qualquer instrumentação 'AndroidJunitRunner'. O BaseMetricListener pode ser implementado para relatar automaticamente as métricas coletadas de forma totalmente compatível com o pipeline de relatórios do Tradefed.
Esta biblioteca é dissociada do próprio Tradefed e pode ser usada sem o Tradefed.
Se você estiver usando o executor ' AndroidJUnitTest ' do Tradefed, basta especificar a seguinte opção de linha de comando para que seu coletor seja executado com seus testes:
--device-listeners android.device.collectors.ScreenshotListener
CUIDADO: para que as classes do coletor sejam resolvidas em tempo de execução, seu APK de instrumentação provavelmente precisará incluí-las estaticamente adicionando o seguinte ao seu makefile:
LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib
Implementação
Ao implementar sobre a classe base BaseMetricListener
, você pode escolher quando deseja coletar suas métricas durante o ciclo de vida da instrumentação:
- Quando uma execução de teste é iniciada:
onTestRunStart
- Quando um caso de teste é iniciado:
onTestStart
- Quando um caso de teste termina:
onTestEnd
- Quando um caso de teste falha:
onTestFail
- Quando uma execução de teste termina:
onTestRunEnd
Interação
A coleta de métricas no lado do dispositivo é feita de forma síncrona com a própria execução da instrumentação, e as métricas são passadas de volta para os resultados da instrumentação e analisadas pelo Tradefed para serem relatadas como parte da invocação.