2013-06-20 12 views
24

Próbuję uzyskać testy (junit i robolectric) pracy w projekcie Android, ale całkowicie utknąłem. Moim głównym problemem jest to, że wszystkie badania I z Gradle znaleźć jakiś sposób wyciągnąć z wtyczki Java i następnie uzyskać ten błąd:junit testowanie z gradle dla projektu Android

The 'java' plugin has been applied, but it is not compatible with the Android plugins. 

Jedyne wyjście widzę w tej chwili jest podzielić na badania i aplikacji projektu - ale Chciałbym tego uniknąć. Wszelkie przykłady/wskazówki byłyby wysoko cenione!

W the official documentation nie ma wzmianki o testowaniu jednostkowym - tylko testy oprzyrządowania - ale chcę jednostki testów, aby uzyskać wyniki szybko.

+0

Zauważ, że nie ma oficjalnego wsparcia testów jednostkowych ponieważ, jak Android 1.1 i wtyczki Gradle 1.1.0. http://tools.android.com/tech-docs/unit-testing-support –

Odpowiedz

27

Nie potrzebujesz wtyczki Java, ponieważ Android zajmie się tym, czego potrzebujesz głównie z tego, co widziałem do tej pory.

udało mi się dostać moje testy Robolectric i JUnit działa poprzez bloga tego człowieka. http://tryge.com/2013/02/28/android-gradle-build/

Mój plik build.gradle wygląda następująco (gdzie moje pliki testowe znajdują się w katalogu {projectdir}/test

... 
// Unit tests 

sourceSets { 
     unitTest { 
       java.srcDir file('test') 
       resources.srcDir file('test/resources') 
     } 
} 

dependencies { 
     unitTestCompile files("$project.buildDir/classes/debug") 
     unitTestCompile 'junit:junit:4.11' 
     unitTestCompile 'org.robolectric:robolectric:2.1.1' 
     unitTestCompile 'com.google.android:android:4.0.1.2' 
} 

configurations { 
     unitTestCompile.extendsFrom runtime 
     unitTestRuntime.extendsFrom unitTestCompile 
} 

task unitTest(type:Test, dependsOn: assemble) { 
     description = "run unit tests" 
     testClassesDir = project.sourceSets.unitTest.output.classesDir 
     classpath = project.sourceSets.unitTest.runtimeClasspath 
} 

build.dependsOn unitTest 
+0

dzięki! Czy to działa w połączeniu z Android-Studio dla Ciebie? Chciałbym uruchomić testy z IDE, ale to jeszcze nie działa dla mnie – ligi

+0

Nie używam jeszcze Androida Studio. Po prostu uruchamiam "gradle build" z linii poleceń. Ponieważ AS ma integrację Gradle i uruchamia "build", uruchomi także zadanie "unitTest", więc pomyślałem, że zostanie uruchomione, chociaż tego nie testowałem. – newfivefour

+0

Nie wydaje mi się, żeby to działało, pojawiają się błędy klasy klasu, w których mój test jednostkowy nie może znaleźć robolektryka ani złącza. Używam programu Gradle 1.6 z wiersza poleceń z zadaniem ./gradlew unitTest – gleenn

1

Ten przewodnik może pomóc - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio

Najnowsze Gradle badanie powinno być pod androidTest reż

Również w gradle.build:

dependencies { 
    androidTestCompile 'junit:junit:4.+' 
} 

także dodać te pod defaultConfig {

testPackageName "test.java.foo" 
testInstrumentationRunner "android.test.InstrumentationTestRunner" 

}

+0

Nie. Jeśli twój test jednostki nie ma zależności lub ma tylko proste zależności od Androida, powinieneś uruchomić test na lokalnej maszynie programistycznej. http://developer.android.com/intl/ru/training/testing/unit-testing/local-unit-tests.html – babay

7

AndroidStudio i nowy plugin Android Gradle oferuje obecnie oficjalnego wsparcia testów jednostkowych .

ten jest wspierany z Androidem 1.1+ i Studio Android Gradle Wersja wtyczki 1.1.0+

Zależności mogą być teraz deklarowane jako testCompile:

dependencies { 
    testCompile 'junit:junit:4.12' 
    testCompile "org.mockito:mockito-core:1.9.5" 
} 

Więcej szczegółów tutaj: Unit testing support - Android Tools Project Site.

0

To co pracował tylko dla mnie:

androidTestCompile 'net.bytebuddy:byte-buddy-android:0.7.8'