2015-05-26 11 views
6

Ich versuche Roboelectric in meinem neuen Projekt zu integrieren. Früher habe ich folgenden Links zu verstehen und roboelectricIntegrieren von Roboelectric mit Android Studio mit Gradle gibt immer Paket org.junit existiert nicht Fehler

http://pivotallabs.com/setting-up-robolectric-in-android-studio-1-1-on-os-x/

http://nenick-android.blogspot.in/2015/02/android-studio-110-beta-4-and.html

http://raptordigital.blogspot.in/2014/02/test-driven-development-with.html

impliment Aber ich bin Gettin auf Laufen meine Testklasse folgende Fehler

Error:Gradle: Execution failed for task ':app:compileDebugJava'. 
> Compilation failed; see the compiler error output for details. 
E:\junitTest\android-studio-robolectric-example-master\JunitTestApp\app\src\test\java\com\inapp\junittestapp\SampleTest.java 
Error:(7, 17) Gradle: error: package org.junit does not exist 
Error:(8, 24) Gradle: error: package org.junit.runner does not exist 
Error:(9, 23) Gradle: error: package org.robolectric does not exist 
Error:(10, 34) Gradle: error: package org.robolectric.annotation does not exist 
Error:(11, 31) Gradle: error: package org.robolectric.shadows does not exist 
Error:(13, 27) Gradle: error: package org.hamcrest does not exist 
Error:(13, 1) Gradle: error: static import only from classes and interfaces 
Error:(14, 27) Gradle: error: package org.hamcrest does not exist 
Error:(14, 1) Gradle: error: static import only from classes and interfaces 
Error:(15, 24) Gradle: error: package org.junit does not exist 
Error:(15, 1) Gradle: error: static import only from classes and interfaces 
Error:(16, 30) Gradle: error: package org.robolectric does not exist 
Error:(16, 1) Gradle: error: static import only from classes and interfaces 
Error:(17, 30) Gradle: error: package org.robolectric does not exist 
Error:(17, 1) Gradle: error: static import only from classes and interfaces 
Error:(18, 30) Gradle: error: package org.robolectric does not exist 
Error:(18, 1) Gradle: error: static import only from classes and interfaces 
Error:(25, 2) Gradle: error: cannot find symbol class RunWith 
Error:(26, 2) Gradle: error: cannot find symbol class Config 
Error:(30, 6) Gradle: error: cannot find symbol class Test 
Error:(32, 38) Gradle: error: cannot find symbol method  setupActivity(Class<MainActivity>) 
Error:(36, 9) Gradle: error: cannot find symbol method clickOn(Button) 
Error:(38, 41) Gradle: error: cannot find symbol variable ShadowAlertDialog 
Error:(39, 42) Gradle: error: cannot find symbol method notNullValue() 
Error:(41, 9) Gradle: error: cannot find symbol class ShadowAlertDialog 
Error:(41, 47) Gradle: error: cannot find symbol method shadowOf(AlertDialog) 
Error:(42, 61) Gradle: error: cannot find symbol method is(String) 

Hinzugefügt unter meinem Test Klassencode

und meine app gradle Datei ist

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.example.junittestapp" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { main { java.srcDirs = ['src/main/java', 'src/test/java/'] } } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:support-v4:22.1.1' 
    testCompile 'junit:junit:4.12' 
    testCompile 'org.robolectric:robolectric:2.4' 
} 

ich denselben Fehler in diesem Blog zu

https://discuss.gradle.org/t/why-cant-my-simplest-one-line-build-gradle-compile-tests-with-junit-jar/1868

Ich denke, fand, dass ich etwas vermissen. Jede Hilfe wird geschätzt.

+0

Haben Sie Unit Testing im Android Studio aktiviert? –

+0

ja innen Gradle Recht ?? –

+0

Keine Datei-> Einstellungen-> Gradle-> Experimental: Enable Unit Testing –

Antwort

13

Ihr Problem ist, dass Sie ein sourceSet erklärt als Haupt haben, dass Code für die Anwendung und für den Test enthält. Deshalb Gradle Aufgabe ': App: compileDebugJava' schlägt fehl, weil es nicht junit.jar hat in diesem Moment (es testCompile injiziert wird - Zeit). Deklariere zwei verschiedene SourceSets und alles sollte funktionieren.

2

Hatte das gleiche Problem, in meinem Fall legte ich die Testklasse in das falsche Verzeichnis.

src \ androidTest \ java [Paket] \

statt

src \ test \ java [Paket] \

Ich denke, man es so konfigurieren, dass mit anderen Verzeichnissen zu arbeiten, aber setzen Unit Tests in Test und UI/Systemtests in androidTest sieht gut aus

3

Wenn Sie hier versuchen, Ihre Unit-Tests in Android auszuführen, können Sie dieses Problem beheben, indem Sie den Speicherort Ihrer Testdateien in den sourceSets separat angeben:

sourceSets { 
    main { java.srcDirs = ['src/main/java'] } 
    test { java.srcDirs = ['src/test/java'] } 
} 

Sie können ändern, um zu verwenden, wo immer sich Ihr Quellverzeichnis befindet. Beachten Sie, dass dies in der Build.gradle (App-Ebene) geschieht.

+0

danke, das brachte mich auf der rechten Seite Pfad. – waynesford

4

Gleicher Fehler hier. Die Lösung für meinen Fall ist: Entfernen Sie 'src/test/java' von main.java.srcDirs.

Vor:

main.java.srcDirs = ['src/main/java', 'src/test/java'] 

Nach:

main.java.srcDirs = ['src/main/java'] 

OK Getestet mit Android Studio 2.0 Vorschau 4. Und tatsächlich mit dem neuesten Android-Studio, dann ist es nicht wirklich notwendig robolectric einstellen Eigenschaft innerhalb von sourceSets (wie @falvick erwähnt).

+0

es funktioniert für mich, danke Jing Li – Victor

Verwandte Themen