2013-06-18 13 views
17

Jestem nowy w gradle i Android Studio i próbuję dowiedzieć się, jak uruchomić testy. Postępowałem zgodnie z instrukcjami w http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing i jestem w stanie uruchomić test urządzenia, ale wykonuję tylko /gradlew connectedInstrumentTest. Mam problemy ze zrozumieniem innych zadań check, które nie powodują żadnego kodu w mojej aplikacji. To co ./gradlew tasks printsGradle Android testowanie

... 
Verification tasks 
------------------ 
check - Runs all checks. 
connectedCheck - Runs all device checks on currently connected devices. 
connectedInstrumentTest - Installs and runs the tests for Build 'Debug' on connected devices. 
deviceCheck - Runs all device checks using Device Providers and Test Servers. 
... 

Jeśli check uruchamia wszystkie czeki ... nie należy go uruchomić te dostaję od connectedInstrumentTest?

Ponadto, w jaki sposób mogę uruchomić testy, które nie wymagają środowiska Android? Czy powinienem je umieścić w/test/java? Jeśli tak, to jakie polecenie należy uruchomić, aby je wykonać?

Przepraszam, jeśli te pytania wydają się bardzo oczywiste, ale po prostu nie znalazłem żadnej odpowiedzi na te pytania w dokumentach.

Dziękujemy!

Edit:

Więc mam pewien postęp tutaj. Wygląda na to, że check nic nie robi. Byłby teraz (w tej chwili) programistą dodającym zależne zadania do check, aby uruchomić niektóre testy JUnit. Będziesz musiał stworzyć zadanie, sprawić, by znalazł źródła, skompilował je i uruchomił.

connectedCheck i connectedInstrumentTest: uruchamia instrumentację Testuj w urządzeniu. (to zawsze działało).

deviceCheck: Funkcja ta jest przydatna, ponieważ docs powiedzieć, do testowania integracji ciągłych.

Odpowiedz

1

sprawdź POWINIEN uruchomić testy oprzyrządowania IIRC. Informacje o przeprowadzaniu testów innych niż Android. Obecnie plugin android-gradle go nie obsługuje. Zrobiłem jednak wtyczkę, aby uruchamiać testy JUnit z robolectric, więc nie potrzebujesz testów instrumentacyjnych. Oto link: android-unit-test

5
  1. Jeśli zaznaczysz uruchamia wszystkie kontrole ... nie powinien działać te dostaję od connectedInstrumentTest? można uruchomić zadanie connectedInstrumentTest jako zależność, aby sprawdzić zadanie.

    check.dependsOn connectedInstrumentTest

  2. Jak mogę uruchomić testy, które nie wymagają środowiska z Androidem?

dla Androida projektów możemy omówione około 3 rodzaje testów

  1. Junit testowych do
  2. Robolectric Test
  3. testowej

testy JUnit

Nie możemy użyć prostego testu junit do sprawdzenia klas powiązanych z Androidem.Możemy jedynie oddzielić główne klasy java od projektu biblioteki Java i dodać tę zależność do projektu Androida.

Robolectric Test

Możemy użyć robolectric testu uruchomić testy jednostkowe poza emulatora. Dzięki temu testy są szybkie i łatwe w konfiguracji z serwerami CI.

Aby uruchomić test robolektryczny, używamy gradle-android-test-plugin Jasno opisuje, jak korzystać z tej wtyczki.

Struktura projektu

Musimy wykorzystać domyślną strukturę folderów w celu korzystania z tej wtyczki. Musimy wykorzystać folder o nazwie „test”, aby zachować testy robolectric:

MyProject/ 
    | settings.gradle 
    | build.gradle 
    - app/ 
     | build.gradle 
     -main 
      -java 
       -com.example.calculator  

     -test 
      -java 
       -com.example.calculator.robolectrictests 

kompilacji jest

buildscript { 
    repositories { 
     mavenCentral() 
     maven { 
      url 'https://oss.sonatype.org/content/repositories/snapshots/' 
     } 
    } 
} 
dependencies { 
    classpath 'com.android.tools.build:gradle:0.6.+' 
    classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT' 
} 
apply plugin: 'android' 
apply plugin: 'android-test' 

repositories { 
    mavenCentral() 
} 
android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 
    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 19   
    } 
} 
dependencies { 
    compile 'com.android.support:appcompat-v7:+' 
    testCompile 'junit:junit:4.10' 
    testCompile 'org.robolectric:robolectric:2.1.+' 
    testCompile 'com.squareup:fest-android:1.0.+' 
} 

Zadanie testu automatycznie wykonuje zadanie wyboru.

testowania Instrument

Jak wspomniano, to wymaga korzystania z android emulator. To sprawia, że ​​testy są wolne, co oznacza, że ​​nie są dobrym sposobem na zrobienie TDD.

Możemy użyć testu robolektycznego jako testów jednostkowych w procesie TDD. Test urządzenia możemy wykorzystać jako zintegrowany test w TDD.

+4

Wtyczka testowa do grad-androida jest przestarzała i nie powinieneś już jej używać (po prostu nie działa z najnowszą wtyczką android gradle). – tomrozb

+0

Wtyczka została przemianowana na ** wtyczka robolectric-gradle ** i jest teraz obsługiwany przez zespół Robolectric: https://github.com/robolectric/robolectric-gradle-plugin – friederbluemle