Używam testów urządzenia z Androidem w wersji awesome plugin from Jake Wharton. Mój cel polegający na podjęciu próby uruchomienia tych testów jednostkowych to szybkość (szybkie informacje zwrotne TDD i wszystkie).Przeprowadź pojedynczy test systemu Android (jednostka) ze stopniowania bez ładowania innych zależności projektu.
Ja kieruję go skonfigurować poprawnie i jakieś przykładowe testy uruchomione w następujący sposób:
./gradlew test
Ilekroć uruchomić testy choć zauważyć następujący wynik:
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 wydaje ładuj WSZYSTKIE zależności dla mojego projektu.
mojego testu próbki jest następujący:
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);
}
}
Ten test powinien rzeczywiście wziąć ułamek sekundy, aby uruchomić. Rozumiem, że całe to wstępne ładowanie zależności projektu powoduje je.
W dobre dni, chciałbym się upewnić, mam co potrzebne w CLASSPATH i po prostu uruchomić coś takiego:
javac src/test/java/main/java/com/micromobs/pkk/AdditionOperationsTest.java
java org.junit.runner.JUnitCore com.micromobs.pkk.AdditionOperationsTest
biorąc pod uwagę to jest Android projekt z Gradle, jestem przy założeniu, bym zrobić coś trochę innego, jak tworzyć specyficzne zadania w pliku gradle build, które zawierają tylko moje pliki testowe do mojego przykładowego projektu, a następnie uruchomić polecenie gradle ./gradlew taskName?
Pytanie: Czy jest możliwe, aby uruchomić jeden test „AdditionOperationsTest” w kontekście mojego projektu (com.mycompany.mysampleapp) sam tak, że nie ładuje zewnętrznych zależności projektowych
oto jak moja konfiguracja pliki aktualnie wygląda tak:
# 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
Próbuję rozwiązać ten sam problem. Myślę, że rzeczą do zrobienia jest posiadanie projektu wielomodułowego, aby testy istniały w osobnym module, ale mam nadzieję, że nie będzie to konieczne. – Turnsole
Tak, NAPRAWDĘ nie chcę łamać moich testów na różne moduły. Czuję, że straciłbym na tym, że zmieniłem cały nasz projekt na gradulacyjny. Mam nadzieję, że jest to po prostu jakiś głupi parametr, który muszę dodać lub zadanie, które muszę zadeklarować, że zignoruje zewnętrzne zależności projektu i przeprowadzi dokładny test, na który wskażę i tylko wymagane zależności. –