Testes de host JAR

Os testes de host de arquivo Java (JAR) precisam ser implementados para fornecer cobertura de código completa do software. Siga as instruções para criar testes de unidade locais. Crie pequenos testes de unidade para validar uma função específica e nada mais.

Exemplo

O arquivo de blueprint a seguir fornece um exemplo simples de teste de host JAR Hello World para copiar e adaptar às suas necessidades: platform_testing/tests/example/jarhosttest/Android.bp

Isso corresponde ao código de teste real encontrado em: platform_testing/tests/example/jarhosttest/test/android/test/example/helloworld/HelloWorldTest.java

Um snapshot do arquivo de blueprint está incluído aqui para sua conveniência:

java_test_host {
    name: "HelloWorldHostTest",

    test_suites: ["general-tests"],

    srcs: ["test/**/*.java"],

    static_libs: [
        "junit",
        "mockito",
    ],
}

A declaração java_test_host no início indica que esse é um teste de host JAR. Confira um exemplo de uso em: frameworks/base/tools/powermodel/Android.bp

Configurações

Confira abaixo explicações sobre as seguintes configurações:

  • A configuração name é obrigatória quando o tipo de módulo java_test_host é especificado (no início do bloco). Essa configuração dá um nome ao módulo, e o JAR resultante tem o mesmo nome e um sufixo .jar. No exemplo abaixo,o JAR de teste resultante é chamado de HelloWorldHostTest.jar. Além disso, essa configuração também define um nome de destino de make para o módulo, para que você possa usar make [options] <HelloWorldHostTest> para criar o módulo de teste e todas as dependências dele.

    name: "HelloWorldHostTest",
    
  • A configuração test_suites facilita a descoberta do teste pelo harness de teste da Trade Federation. Outros conjuntos de testes podem ser adicionados aqui, como o CTS, para que o teste de host JAR possa ser compartilhado.

    test_suites: ["general-tests"],
    
  • A configuração static_libs instrui o sistema de build a incorporar o conteúdo dos módulos nomeados ao APK resultante do módulo atual. Isso significa que cada módulo nomeado precisa produzir um arquivo .jar. O conteúdo do módulo é usado para resolver referências de classpath durante o tempo de compilação e incorporado ao APK resultante.

    static_libs: [
        "junit",
    ],