2013-06-20 6 views
24

Ich versuche, Tests (junit und robolectric) Arbeiten in einem Android-Projekt, aber bin total stecken. Mein Hauptproblem ist, dass alle Tests ich mit gradle irgendwie in dem Java Plugin ziehen gefunden und dann bekomme ich diesen Fehler:junit testing mit gradle für ein android-projekt

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

Der einzige Ausweg ich im Moment sehe, ist in Test und App-Projekt zu teilen - aber Ich möchte das vermeiden. Alle Beispiele/Hinweise würden sehr geschätzt werden!

In the official documentation gibt es keine Erwähnung von Unit-Tests - nur Instrumentierung-Tests - aber ich will Unit-Tests, um Ergebnisse schnell zu erhalten.

+0

Beachten Sie, dass es Plugin 1.1.0 offizielle Unit-Tests Unterstützung ist seit AS 1.1 und Android Gradle. http://tools.android.com/tech-docs/unit-testing-support –

Antwort

27

Sie brauchen das Java-Plugin nicht, da das Android sich um das kümmert, was Sie am meisten brauchen, von dem, was ich bisher gesehen habe.

ich es geschafft, meine Robolectric und JUnit-Tests laufen über dieses Mannes Blog zu erhalten. http://tryge.com/2013/02/28/android-gradle-build/

wie Meine build.gradle-Datei (wo meine Testdateien sind in der {projectdir}/test

sieht
... 
// 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

danke! Funktioniert das in Kombination mit Android-Studio für dich? Würde gerne die Tests von der IDE ausführen, aber das funktioniert noch nicht für mich – ligi

+0

Ich verwende Android Studio noch nicht. Ich führe einfach "Gradle Build" von der Kommandozeile aus. Da AS Gradle-Integration hat und "Build" ausführt, wird auch die "unitTest" -Aufgabe ausgeführt, also hätte ich gedacht, dass sie ausgeführt wird, obwohl ich dies nicht getestet habe. – newfivefour

+0

Ich kann nicht scheinen, dass dies funktioniert, ich bekomme Klassenpfadfehler, wo mein Komponententest nicht robolectric oder junit finden kann. Ich laufe Gradle 1.6 von der Kommandozeile mit der Aufgabe ./gradlew unitTest – gleenn

1

könnte Dieser Leitfaden helfen - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio

Neueste gradle der Test unter androidTest dir

sein sollte

Auch in Ihrer gradle.build:

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

auch diejenigen unter hinzufügen DefaultConfig {

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

}

+0

Nein. Wenn Ihr Komponententest keine Abhängigkeiten oder nur einfache Abhängigkeiten von Android aufweist, sollten Sie Ihren Test auf einem lokalen Entwicklungscomputer ausführen. http://developer.android.com/intl/ru/training/testing/unit-testing/local-unit-tests.html – babay

7

Android Studio und die neue Android Gradle Plugin bieten jetzt offizielle Unit-Test-Unterstützung .

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

Weitere Details hier:

Dies wird von Android Studio 1.1+ und Android Gradle Plugin-Version 1.1.0+

Abhängigkeiten als testCompile deklariert werden können jetzt unterstützt Unit testing support - Android Tools Project Site.

0

Dies ist, was nur für mich gearbeitet:

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