2016-04-18 18 views
7

Ich bin ein QA mit einer Startfirma. Meine Entwickler-Setup-Instrumentierungstests im Android-Projekt. Er hat auch die Jenkins-Jobs eingerichtet, um diese Tests in CI-Umgebung auszuführen.connectedAndroidTest Wie man spezifische Tests durchführt

Dies ist der Befehl, der im Feld "Aufgaben" im Jenkins-Job unter Build -> Invoke Gradle script angegeben wird. sauber assembleDebug connectedAndroidTest testDebug

Ich möchte meinen eigenen Jenkins-Job erstellen, um verschiedene Arten von Tests auszuführen. Gibt es eine Möglichkeit, dass ich meine Tests filtern kann, indem ich einfach den Befehl "connectedAndroidTest" ausführe? Ich habe versucht, Shell-Skript wie folgt zu verwenden, aber es hat nicht funktioniert. adb shell am Instrument -w/

ich die folgende Fehlermeldung bin immer: [Execute Smoke Test Suite] $/bin/bash -xe /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh + adb shell am instrument -w '' Klasse com.draysonwireless.airmapandroid.rewards/BonusTest.java /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh: Zeile 2: adb: Befehl nicht gefunden Build Schritt 'Shell ausführen 'marked Build als Fehler Fertig: FAILURE

+0

Ihre Frage ist nicht klar genug. Es scheint, dass Ihr technisches Verständnis Sie davon abhält, die Ursache des Problems zu verstehen. Ich würde vorschlagen, ein paar Tutorials durchzusehen und dann mit einer spezifischeren Frage zurück zu kommen. –

+0

@ Alex.F Entschuldigung, ich stimme zu, dass die Frage ein bisschen mehrdeutig ist. Grundsätzlich suche ich nach einer Möglichkeit, nur bestimmte Tests in Jenkins-Jobs auszuführen. Wenn ich Maven-Builds verwende, weiß ich, dass es eine Möglichkeit gibt, spezifische Tests mit den Tags (Annotationen) auszuführen. Gibt es einen ähnlichen Weg für Gradle Builds? – jellyBeans

Antwort

9

Scheint, dass Ihr Benutzer von jenkins kann nicht sehen Android ADB daher Build fehlschlägt. Fügen Sie adb dem Systempfad hinzu oder weisen Sie auf den genauen Speicherort hin.

Als spezifische Tests über gradle Befehl unten zu laufen ist ein Beispiel:

./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest#testMethodName

Entnommen here mit meiner leichten Modifikation. Ihr connectedAndroidtest-Befehl kann abhängig von der Existenz des Testaromas variieren.

+0

Danke denys. Ich erhalte den folgenden Fehler com.android.builder.testing.ConnectedDevice> Keine Tests gefunden. [Google Nexus 5 - 5.1.0 - API 22 - 1080x1920 - 5.1] FEHLGESCHLAGEN Keine Tests gefunden. Dies bedeutet normalerweise, dass Ihre Testklassen nicht in der Form vorliegen, die Ihr Test-Runner erwartet (z. B. nicht von TestCase erben oder @Test-Annotationen fehlen). : app: connectedDebugAndroidTest – jellyBeans

+0

@jellyBeans Überprüfen Sie den Paketnamen wie 'com.android.builder.testing'. Es sollte eines der Pakete sein, die Sie erhalten, nachdem Sie diesen Befehl 'adb shell pm list instrumentation' ausgeführt haben. – denys

+0

Ich denke, dieser Fehler hat mit dem Emulator zu tun. Wenn ich einen anderen Emulator verwende, sehe ich diesen Fehler nicht mehr. Aber es gibt eine weitere Ausnahme, die auftritt INSTRUMENTATION_STATUS: Fehler = Instrumentinfo für: ComponentInfo {com.company.project.SignUpScreeTest/android.support.test.runner.AndroidJUnitRunner} – jellyBeans

0

Dies ist der Shell-Skript ich in meinem Jenkins Job verwendet:

export PATH=$PATH:/Users/Shared/Jenkins/Library/Android/sdk/platform-tools 
adb shell am instrument -w -r -e debug false -e class com.company.project.test.SmokeTest com.company.project.debug.test/android.support.test.runner.AndroidJUnitRunner 

Die Ordnerstruktur wie unten sein sollte: app -> src -> androidTest -> Java -> com. Firma.Projekt -> Test -> TestKlasse