Unsere Android App muss automatisiert getestet werden, und unsere Gruppe verwendet Robotium, um das für uns zu erledigen. Dies ist kein Problem für Komponententests, aber wir schreiben auch eine Reihe von End-to-End-Integrationstests, um nicht nur den Client über die Back-End-Server zu testen. Ich habe einige Tests, die das tun, aber wenn möglich, möchte ich sie getrennt von den Komponententests ausgliedern, so dass unsere kontinuierlichen Integrations-Builds keinen laufenden Server benötigen, um ausgeführt zu werden.Wie führt man Integrationstests für Android mit dem neuen Gradle Build System durch?
Wir verwenden das glänzende neue Gradle-Build-System. Ich frage mich, ob ich etwas wie eine Test-only-Variante oder ein Teilprojekt machen könnte, das vom übergeordneten APK abhängt, um es zum Laufen zu bringen. Ich habe versucht, dies mit einem separaten Projekt zusammen zu machen, indem ich die Robotium-Anweisungen zum Testen einer quellfreien Debug-APK verwendete, aber es hat nicht funktioniert. Vielleicht, weil ich auf echter Hardware und nicht auf einem Emulator war. Ich hatte mit dem Emulator kein Glück, auch wenn die Hardware-Beschleunigung installiert war.
Jede Beratung, oder sollte ich nur halten Sie den Atem an und Rolle mit meiner Builds den Integrationsserver erfordert Verfügung zu stehen, wenn Builds passiert sind?
Ich habe das funktioniert. Was ich möchte, ist eine Möglichkeit, meine serverabhängigen Integrationstests von meinem nicht serverabhängigen Test zu trennen, sodass Jenkins keinen laufenden Produktserver benötigt, um zu funktionieren. – Argyle
Ah, ich verstehe. In diesem Fall sehen Sie sich ein benutzerdefiniertes sourceSet in 'build.gradle' namens' integrationTest' an. Sie haben dann den 'compileIntegrationTest' in Ihrer Abhängigkeitssperre, wo Sie Robotium hinzufügen können. Fügen Sie eine Aufgabe hinzu, um diese Integrationstests auszuführen. Durch Angabe eines benutzerdefinierten sourceSet 'grdle build' werden diese standardmäßig nicht ausgeführt. Um sie auszuführen, müssen Sie eine benutzerdefinierte Aufgabe hinzufügen. Ich überarbeite meine Antwort mit einer Quelle. – Joe
Wäre es nicht "instrumentTestCompile"? –