Auf dieser Seite wird beschrieben, wie Sie einen vom Host gesteuerten Gerätetest im JUnit4-Stil schreiben. Das bedeutet, dass auf der Hostseite auf dem Gerät.
Beachten Sie, dass wir als „hostseitig“ Tests und "host-gesteuert" Tests leicht zu unterschiedlich:
- host-gesteuerter Test: Hier wird ein Test auf dem Host ausgeführt, der mit einem oder mehr Geräte. Das zu testende System befindet sich nicht auf dem Host selbst, die vom Host getestet werden.
- Host-Side-Test: Wird nur auf dem Host ausgeführt und testet etwas z. B. Einheitentests.
Warum sollte ich einen hostgesteuerten Test anstelle eines Instrumentierungstests erstellen?
Bei einigen Tests müssen Sie möglicherweise den Gesamtstatus des Geräts beeinflussen, z. B. eine neu starten. Im Testfall für die Instrumentierung würde ein Neustart die der Test nicht fortgesetzt werden konnte und keine Ergebnisse verfügbar wären.
Hostgesteuerte Tests können auch zusätzliche Einrichtungsschritte ermöglichen, die eine Interaktion erfordern mit externen Geräten, von denen der Test abhängt.
Ein hostgesteuerter Test eignet sich für diese Anwendungsfälle und ermöglicht erweiterte Tests von mit weiteren Szenarien. Wenn Sie sich in dieser Situation befinden, schreiben Sie eine am besten geeignet.
Wie werden hostgesteuerte Tests in TF geschrieben?
Hier ein Beispiel:
@RunWith(DeviceJUnit4ClassRunner.class)
public class SampleHostJUnit4DeviceTest extends BaseHostJUnit4Test {
@Before
public void setUp() throws Exception {
// Some setup
}
@Test
public void testCheckWeHaveDevice() throws Exception {
Assert.assertNotNull(getDevice());
}
}
Hostgesteuerte Tests in Trade Federation werden vom DeviceJUnit4ClassRunner durchgeführt JUnit4-Test-Runner. Die Gesamtstruktur der Testklasse entspricht der eines Regulärer JUnit4-Test:
@BeforeClass
@Before
@Test
@After
@AfterClass
Assume
,Assert
BaseHostJunit4Test erweitern ist eine Möglichkeit, nützliche Testdienstprogramm-APIs zu übernehmen, z. B.:
installPackage
: Ermöglicht die Installation eines APK auf dem Zielgerät.installPackageAsUser
: Ermöglicht die Installation eines APK als Nutzer auf dem Ziel .uninstallPackage
: Ermöglicht die Deinstallation eines APK.isPackageInstalled
: Prüft, ob ein Paket installiert ist oder nicht.hasDeviceFeature
: Prüfen Sie, ob das Gerät eine Funktion unterstützt. (pm list features
)runDeviceTests(DeviceTestRunOptions options)
: Instrumentierung ausführen Test mit einem Zielgerät mithilfe von DeviceTestRunOptions um alle möglichen Optionen abzuwickeln.
Gewähren Sie auch Zugriff auf das Tradefed-Geräteobjekt:
getDevice()
: Gibt ein TF-Geräteobjekt zur Bearbeitung des Geräts zurück.getBuild()
: Gibt ein Build-Info-TF-Objekt zurück, um Informationen zum erstellen.getAbi()
: Gibt die ABI zurück, für die der Test ausgeführt wird.
Tradefed-Support: Vorbereitung und Bereinigung der Geräteklasse
JUnit4 @BeforeClass
und @AfterClass
gelten nur für statische Methoden,
Dadurch ist es unmöglich, den #getDevice()
-Handler für einige
gerätespezifische Einrichtung oder Bereinigung nur einmal pro Klasse. Verwenden Sie zur Behebung dieses Problems
die Anmerkung „Tradefed“.
- @BeforeClassWithInfo: Wird vor @BeforeClass-Annotationen ausgeführt
- @AfterClassWithInfo: Wird nach @AfterClass-Annotationen ausgeführt
@BeforeClassWithInfo
public static void beforeClassWithDevice(TestInformation testInfo) {
assertNotNull(testInfo.getDevice());
testInfo.properties().put("mytest:test-prop", "test");
}
@AfterClassWithInfo
public static void afterClassWithDevice(TestInformation testInfo) {
assertNotNull(testInfo.getDevice());
testInfo.properties().put("mytest:test-prop", "test");
}
Mit TestInformation
können Sie Geräte- und Speichereigenschaften verwenden, die
die im statischen oder
nicht-statischen Bereich verwendet werden. BaseHostJUnit4Test
unterstützt
Abrufen des TestInformation
in einem nicht statischen Bereich über #getTestInformation()
Wenn Sie BaseHostJUnit4Test
nicht erweitern, können Sie
ITestInformationReceiver
fest, um das TestInformation
-Objekt zu erhalten.
Wie wird ein hostgesteuerter Test in Tradefed konfiguriert?
In der Tradefed-XML-Konfigurationsdatei werden hostgesteuerte Tests über die HostTest Runner.
<test class="com.android.tradefed.testtype.HostTest" >
<option name="class" value="android.sample.cts.SampleHostJUnit4DeviceTest" />
</test>