

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Instrumentação para Android e AWS Device Farm
<a name="test-types-android-instrumentation"></a>

O Device Farm fornece suporte para Instrumentação (JUnit, Espresso, Robotium ou qualquer teste baseado em instrumentação) para Android.

O Device Farm também fornece uma aplicação Android de amostra e links para testes funcionais em três estruturas de automação do Android, incluindo Instrumentation (Espresso). O [aplicativo de amostra Device Farm para Android](https://github.com/awslabs/aws-device-farm-sample-app-for-android) está disponível para download em GitHub.

Para acessar mais informações sobre testes no Device Farm, consulte [Frameworks de teste e testes integrados no AWS Device Farm](test-types.md).

**Topics**
+ [O que é instrumentação?](#test-types-android-instrumentation-what-is)
+ [Considerações sobre testes de instrumentação do Android](#test-types-android-instrumentation-settings)
+ [Análise de teste em modo padrão](#test-types-android-standard-mode-test-parse)
+ [Integrar a instrumentação do Android ao Device Farm](test-types-android-instrumentation-integrate.md)

## O que é instrumentação?
<a name="test-types-android-instrumentation-what-is"></a>

A instrumentação do Android possibilita chamar métodos de retorno de chamada no código de teste, de maneira que você possa percorrer o ciclo de vida de um componente passo a passo, como se estivesse depurando o componente. Para obter mais informações, consulte [Instrumented tests](https://developer.android.com/studio/test/test-in-android-studio#test_types_and_locations) na seção *Test types and locations* da documentação de *Android Developer Tools*.

## Considerações sobre testes de instrumentação do Android
<a name="test-types-android-instrumentation-settings"></a>

Ao usar a instrumentação do Android, pense nas recomendações e observações a seguir.

**Conferir a compatibilidade do sistema operacional Android**  
 Confira a [documentação do Android](https://developer.android.com/jetpack/androidx/releases/test#orchestrator-1.5.0) para garantir que a instrumentação seja compatível com sua versão do sistema operacional Android. 

**Executar pela linha de comando**  
 Para executar testes de instrumentação na linha de comando, siga a [documentação do Android](https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#enable-command). 

**Animações de sistema**  
 De acordo com a [Android documentation for Espresso testing](https://developer.android.com/training/testing/espresso), recomenda-se que as animações do sistema sejam desativadas ao testar em dispositivos reais. O Device Farm desativa automaticamente as configurações **Window Animation Scale**, **Transition Animation Scale** e **Animator Duration Scale** quando executado com o executor de testes de instrumentação [JUnitandroid.support.test.runner.Android](http://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html) Runner.

**Gravadores de teste**  
O Device Farm oferece suporte a estruturas, como Robotium, que têm record-and-playback ferramentas de script.

## Análise de teste em modo padrão
<a name="test-types-android-standard-mode-test-parse"></a>

No modo padrão de uma execução, o Device Farm analisa sua suíte de testes e identifica as classes e métodos de teste exclusivos que ela executará. Isso é feito por meio de uma ferramenta chamada [Dex Test Parser](https://github.com/linkedin/dex-test-parser). 

Quando recebe um arquivo.apk de instrumentação do Android como entrada, o analisador retorna os nomes dos métodos totalmente qualificados dos testes que correspondem às convenções JUnit 3 e 4. JUnit 

Para testar isso em um ambiente local: 

1. Faça download do binário [https://github.com/linkedin/dex-test-parser](https://github.com/linkedin/dex-test-parser).

1. Execute o comando a seguir para obter a lista de métodos de teste que serão executados no Device Farm:

   ```
   java -jar parser.jar path/to/apk path/for/output
   ```

# Integrar a instrumentação do Android ao Device Farm
<a name="test-types-android-instrumentation-integrate"></a>

**nota**  
Use as instruções a seguir para integrar os testes de instrumentação do Android ao AWS Device Farm. Para acessar mais informações sobre o uso de testes de instrumentação no Device Farm, consulte [Instrumentação para Android e AWS Device Farm](test-types-android-instrumentation.md). 

## Upload dos testes de instrumentação para Android
<a name="test-types-android-instrumentation-upload"></a>

Use o console do Device Farm para carregar seus testes.

1. Faça login no console do Device Farm em [https://console.aws.amazon.com/devicefarm.](https://console.aws.amazon.com/devicefarm)

1. No painel de navegação do Device Farm, escolha **Teste para dispositivos móveis** e, em seguida, **Projetos**.

1. Na lista de projetos, escolha o projeto para o qual deseja carregar seus testes.
**dica**  
Você pode usar a barra de pesquisa para filtrar a lista de projetos por nome.  
Para criar um projeto, siga as instruções em [Criar um projeto no AWS Device Farm](how-to-create-project.md).

1. Selecione **Criar execução**.

1. Em **Selecionar aplicação**, na seção **Opções de seleção de aplicação**, escolha **Fazer upload da própria aplicação**.

1. Procure e escolha o arquivo de seu aplicativo Android. O arquivo deve ser .apk.

1. Na página **Configurar teste**, na seção **Selecionar framework de teste**, escolha **Instrumentação** e, depois, selecione **Escolher arquivo**.

1. Procure e escolha o arquivo .apk que contém os testes.

1. Conclua as instruções restantes para selecionar dispositivos e iniciar a execução.

## (Opcional) Fazer captura de telas em testes de instrumentação do Android
<a name="test-types-android-instrumentation-screenshots"></a>

Você pode fazer capturas de tela como parte dos testes de instrumentação para Android.

Para fazer a captura de telas, chame um dos seguintes métodos:
+ Para Robotium, chame o método `takeScreenShot` (por exemplo, `solo.takeScreenShot();`).
+ Para Spoon, chame o método `screenshot`; por exemplo:

  ```
  Spoon.screenshot(activity, "initial_state");
  /* Normal test code... */
  Spoon.screenshot(activity, "after_login");
  ```

Durante uma execução de teste, o Device Farm obtém capturas de tela dos seguintes locais nos dispositivos, se existirem, e as adiciona aos relatórios de teste:
+ `/sdcard/robotium-screenshots`
+ `/sdcard/test-screenshots`
+ `/sdcard/Download/spoon-screenshots/test-class-name/test-method-name`
+ `/data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name`