Ich verwende die awesome plugin from Jake Wharton für Android-Unit-Tests. Mein Ziel, sich die Mühe zu machen, diese Komponententests laufen zu lassen, ist Geschwindigkeit (TDD schnelle Rückmeldung und alle).Führen Sie einen einzelnen Android (Einheit) Test von Gradle ohne andere Projektabhängigkeiten laden
Ich habe verwalten sie richtig konfigurieren und einige Beispieltests ausgeführt haben, wie folgt:
./gradlew test
Immer, wenn ich die Tests laufen, obwohl ich die folgende Ausgabe bemerken:
Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0
The Test.testReportDir property has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the Test.getReports().getHtml().getDestination() property instead.
The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead.
:mySampleApp:preBuild UP-TO-DATE
:mySampleApp:preDebugBuild UP-TO-DATE
:mySampleApp:preReleaseBuild UP-TO-DATE
:libraries:facebook:compileLint
:libraries:facebook:copyReleaseLint UP-TO-DATE
:libraries:facebook:mergeReleaseProguardFiles UP-TO-DATE
:libraries:facebook:packageReleaseAidl UP-TO-DATE
:libraries:facebook:preBuild UP-TO-DATE
:libraries:facebook:preReleaseBuild UP-TO-DATE
:libraries:facebook:prepareReleaseDependencies
:libraries:facebook:compileReleaseAidl UP-TO-DATE
:libraries:facebook:compileReleaseRenderscript UP-TO-DATE
:libraries:facebook:generateReleaseBuildConfig UP-TO-DATE
:libraries:facebook:mergeReleaseAssets UP-TO-DATE
:libraries:facebook:mergeReleaseResources UP-TO-DATE
:libraries:facebook:processReleaseManifest UP-TO-DATE
:libraries:facebook:processReleaseResources UP-TO-DATE
:libraries:facebook:generateReleaseSources UP-TO-DATE
:libraries:facebook:compileRelease UP-TO-DATE
:libraries:facebook:processReleaseJavaRes UP-TO-DATE
:libraries:facebook:packageReleaseJar UP-TO-DATE
:libraries:facebook:packageReleaseLocalJar UP-TO-DATE
:libraries:facebook:packageReleaseRenderscript UP-TO-DATE
:libraries:facebook:packageReleaseResources UP-TO-DATE
:libraries:facebook:bundleRelease UP-TO-DATE
:mySampleApp:prepareComAndroidSupportAppcompatV71800Library UP-TO-DATE
:mySampleApp:preparemySampleAppandroidLibrariesFacebookUnspecifiedLibrary UP-TO-DATE
:mySampleApp:prepareDebugDependencies
:mySampleApp:compileDebugAidl UP-TO-DATE
:mySampleApp:compileDebugRenderscript UP-TO-DATE
:mySampleApp:generateDebugBuildConfig UP-TO-DATE
:mySampleApp:mergeDebugAssets UP-TO-DATE
:mySampleApp:mergeDebugResources UP-TO-DATE
:mySampleApp:processDebugManifest UP-TO-DATE
:mySampleApp:processDebugResources UP-TO-DATE
:mySampleApp:generateDebugSources UP-TO-DATE
Gradle scheint Laden Sie ALLE Abhängigkeiten für mein Projekt.
Mein Muster Test ist wie folgt:
package com.mycompany.mysampleapp;
import org.junit.Test;
import static org.fest.assertions.api.Assertions.assertThat;
public class AdditionOperationsTest {
@Test public void testModulus() {
assertThat(1).isEqualTo(1);
}
}
Dieser Test sollte eigentlich einen Bruchteil einer Sekunde in Anspruch nehmen. Mein Verständnis ist, dass all das Pre-Loading der Abhängigkeiten des Projekts es aufhält.
In den guten Tagen, würde ich sicherstellen, dass ich habe, was ich in der CLASSPATH müssen und laufen nur so etwas wie:
javac src/test/java/main/java/com/micromobs/pkk/AdditionOperationsTest.java
java org.junit.runner.JUnitCore com.micromobs.pkk.AdditionOperationsTest
Betrachtet man dies ein Android-Projekt mit gradle ist, gehe ich davon aus, ich habe würde etwas anderes zu tun, wie zum Beispiel spezifische Aufgaben in der Gradle-Build-Datei zu erstellen, die nur meine Testdateien für mein Beispielprojekt enthalten, und dann einen Gradle-Befehl ausführen ./gradlew taskName?
Frage: Ist es möglich, den einzigen Test „AdditionOperationsTest“ im Rahmen meines Projektes (com.mycompany.mysampleapp) allein zu laufen, so dass es nicht die externen Projektabhängigkeiten nicht geladen
Hier ist, wie meine Konfiguration Dateien suchen derzeit wie:
# settings.gradle
include ':libraries:gradle-android-test-plugin'
include ':libraries:facebook', ':mysampleapp'
# build.gradle
...
apply plugin: 'android-test'
dependencies {
testCompile 'junit:junit:4.10'
testCompile 'org.robolectric:robolectric:2.1.+'
testCompile 'com.squareup:fest-android:1.0.+'
}
# location of my test files:
androidproj/mysampleapp/src/test/java/main/com/mycompany/mysampleapp/AdditionOperationsTest.java
Ich versuche, das gleiche Problem zu lösen. Ich denke, es geht darum, ein Multi-Modul-Projekt zu haben, so dass die Tests in einem separaten Modul existieren, aber ich hoffe, dass das nicht notwendig sein wird. – Turnsole
Ja, ich möchte meine Tests wirklich nicht in verschiedene Module aufteilen. Ich denke, ich würde die Güte verlieren, unser gesamtes Projekt auf den Punkt gebracht zu haben. Ich hoffe, dass dies nur ein dummer Parameter ist, den ich hinzufügen muss, oder eine Aufgabe, die ich deklarieren muss, die externen Projektabhängigkeiten ignoriert und den genauen Test ausführt, auf den ich zeige, und nur Abhängigkeiten, die er benötigt. –