JAR-Hosttests

Java Archive (JAR)-Hosttests sollten implementiert werden, um eine vollständige Codeabdeckung der Software zu gewährleisten. Folgen Sie der Anleitung zum Erstellen lokaler Unit-Tests. Schreiben Sie kleine Unittests, um nur eine bestimmte Funktion zu validieren.

Verwendungsbeispiele

Die folgende Blueprint-Datei enthält ein einfaches Beispiel für einen Hello World-JAR-Hosttest, das Sie kopieren und an Ihre Anforderungen anpassen können: platform_testing/tests/example/jarhosttest/Android.bp

Dies entspricht dem tatsächlichen Testcode unter: platform_testing/tests/example/jarhosttest/test/android/test/example/helloworld/HelloWorldTest.java

Hier ist ein Snapshot der Blueprint-Datei:

java_test_host {
    name: "HelloWorldHostTest",

    test_suites: ["general-tests"],

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

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

Die java_test_host-Deklaration am Anfang gibt an, dass dies ein JAR-Hosttest ist. Ein Beispiel für die Verwendung finden Sie unter: frameworks/base/tools/powermodel/Android.bp

Einstellungen

Unten finden Sie Erläuterungen zu den folgenden Einstellungen:

  • Die Einstellung name ist erforderlich, wenn der Modultyp java_test_host angegeben wird (am Anfang des Blocks). Mit dieser Einstellung wird Ihrem Modul ein Name zugewiesen. Die resultierende JAR-Datei hat denselben Namen und ein Suffix von .jar. Im folgenden Beispiel heißt das resultierende Test-JAR HelloWorldHostTest.jar. Außerdem wird mit dieser Einstellung ein Make-Zielname für Ihr Modul definiert, damit Sie Ihr Testmodul und alle zugehörigen Abhängigkeiten mit make [options] <HelloWorldHostTest> erstellen können.

    name: "HelloWorldHostTest",
    
  • Mit der Einstellung test_suites wird der Test für das Trade Federation Test Harness leicht auffindbar. Hier können weitere Test-Suites hinzugefügt werden, z. B. CTS, damit der JAR-Host-Test geteilt werden kann.

    test_suites: ["general-tests"],
    
  • Die Einstellung static_libs weist das Build-System an, den Inhalt der genannten Module in das resultierende APK des aktuellen Moduls einzubinden. Das bedeutet, dass jedes benannte Modul eine .jar-Datei generieren soll. Der Inhalt des Moduls wird zur Auflösung von Klassenpfadreferenzen während der Kompilierungszeit verwendet und in das resultierende APK eingefügt.

    static_libs: [
        "junit",
    ],