Testy hosta JAR

Testy hosta archiwum Java (JAR) należy wdrożyć, aby zapewnić pełne pokrycie kodu oprogramowania. Postępuj zgodnie z instrukcjami tworzenia lokalnych testów jednostkowych. Pisz małe testy jednostkowe, aby sprawdzać tylko konkretną funkcję.

Przykład

Ten plik Blueprint zawiera prosty przykład testu hosta JAR Hello World, który możesz skopiować i dostosować do swoich potrzeb:platform_testing/tests/example/jarhosttest/Android.bp

Odpowiada to rzeczywistemu kodowi testu, który znajdziesz w tym miejscu:platform_testing/tests/example/jarhosttest/test/android/test/example/helloworld/HelloWorldTest.java

Dla wygody dołączyliśmy tutaj migawkę pliku projektu:

java_test_host {
    name: "HelloWorldHostTest",

    test_suites: ["general-tests"],

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

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

Deklaracja java_test_host na początku wskazuje, że jest to test JAR host. Przykład użycia znajdziesz w tym pliku:frameworks/base/tools/powermodel/Android.bp

Ustawienia

Poniżej znajdziesz wyjaśnienia tych ustawień:

  • Ustawienie name jest wymagane, gdy określony jest typ modułu java_test_host (na początku bloku). To ustawienie nadaje nazwę modułowi, a wynikowy plik JAR ma taką samą nazwę i sufiks .jar. W przykładzie poniżej wynikowy plik JAR testu ma nazwę HelloWorldHostTest.jar. Dodatkowo to ustawienie definiuje nazwę celu kompilacji modułu, dzięki czemu możesz użyć polecenia make [options] <HelloWorldHostTest> do skompilowania modułu testowego i wszystkich jego zależności.

    name: "HelloWorldHostTest",
    
  • Ustawienie test_suites sprawia, że test jest łatwo wykrywalny przez platformę testową Trade Federation. Można tu dodać inne zestawy testów, np. CTS, aby można było udostępniać test hosta JAR.

    test_suites: ["general-tests"],
    
  • Ustawienie static_libs nakazuje systemowi kompilacji włączenie zawartości nazwanych modułów do wynikowego pliku APK bieżącego modułu. Oznacza to, że każdy nazwany moduł powinien generować plik .jar. Treści modułu są używane do rozwiązywania odwołań do ścieżki klasy w czasie kompilacji i są włączane do wynikowego pliku APK.

    static_libs: [
        "junit",
    ],