Observe que este guia pressupõe que você já tenha algum conhecimento no fluxo de trabalho da árvore de origem da plataforma. Caso contrário, consulte https://source.android.com/source/requirements. O exemplo coberto aqui é escrever um novo teste de instrumentação com pacote de destino definido em seu próprio pacote de aplicativo de teste. Se você não estiver familiarizado com o conceito, leia a introdução aos testes da plataforma .
Como o teste de instrumentação terá como alvo um aplicativo, a convenção é colocar o código-fonte do teste em um diretório de tests na raiz do diretório de origem do componente na árvore de origem da plataforma.
Veja mais discussões sobre a localização da fonte no exemplo de ponta a ponta para testes de auto-instrumentação .
Assim como um aplicativo normal, cada módulo de teste de instrumentação precisa de um arquivo de manifesto. Se você nomear o arquivo como AndroidManifest.xml e fornecê-lo ao lado de Android.mk para o seu tmodule de teste, ele será incluído automaticamente pelo makefile do núcleo BUILD_PACKAGE .
Isso define o pacote de destino da instrumentação como com.android.shell . Quando a instrumentação é chamada por meio do comando am instrument , a estrutura reinicia o processo com.android.shell e injeta o código de instrumentação no processo para execução de teste. Isso também significa que o código de teste terá acesso a todas as instâncias de classe em execução no aplicativo em teste e pode ser capaz de manipular o estado dependendo dos ganchos de teste expostos.
O código-fonte mais recente do exemplo de mudança gerrit pode ser acessado em: frameworks / base / packages / Shell / tests / src / com / android / shell / BugreportReceiverTest.java
A anotação @SmallTest especificou um tamanho de teste para toda a classe de teste: todos os métodos de teste adicionados a esta classe de teste herdam essa anotação de tamanho de teste. configuração de classe de pré-teste, desmontagem de pós-teste e tearDown classe de pós-teste: semelhante aos métodos setUp e tearDown em JUnit4. Test anotação de Test é usada para anotar o teste real.
Como os testes JUnit4 não requerem mais uma classe base comum, não é mais necessário obter instâncias de Context por meio de getContext() ou getTargetContext() por meio de métodos de classe base; em vez disso, o novo executor de teste os gerencia por meio doInstrumentationRegistry onde a configuração contextual e ambiental criada pela estrutura de instrumentação é armazenada. Por meio desta aula, você também pode chamar: