Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将RoboeElectric与android studio与gradle集成始终会得到包org.junit不存在错误_Java_Android_Junit - Fatal编程技术网

Java 将RoboeElectric与android studio与gradle集成始终会得到包org.junit不存在错误

Java 将RoboeElectric与android studio与gradle集成始终会得到包org.junit不存在错误,java,android,junit,Java,Android,Junit,我正试图在我的新项目中集成RoboeElectric。我使用以下链接来理解和实现roboelectric 但我在运行测试类时遇到以下错误 Error:Gradle: Execution failed for task ':app:compileDebugJava'. > Compilation failed; see the compiler error output for details. E:\junitTest\android-studio-robolectric-examp

我正试图在我的新项目中集成RoboeElectric。我使用以下链接来理解和实现roboelectric

但我在运行测试类时遇到以下错误

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)
我的应用程序gradle文件是

    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'
}
我在这个博客里也发现了同样的错误


我想我错过了什么。任何帮助都将不胜感激。

您的问题是有一个源集声明为main,其中包含用于应用程序和测试的代码。这就是Gradle任务“:app:compiledBugJava”失败的原因,因为当时它没有junit.jar(它是在testCompile时间注入的)。声明两个不同的源集,一切都应该正常工作

sourceSets {
    main {
        java.srcDirs = ['src/main/java']
    }
    robolectric {
        java.srcDir file('src/test/java/')
        resources.srcDir file('src/test/resources')
    }
}

同样的问题,在我的例子中,我把测试类放在了错误的目录中

src\androidTest\java[包]\

而不是

src\test\java[包]\


我想您可以将其配置为与其他目录一起使用,但将单元测试放在test中以及将UI/系统测试放在androidTest中看起来没问题

如果您是通过尝试在Android中运行单元测试来实现这一点的,您可以通过在源集中单独指定测试文件的位置来解决此问题,如下所示:

sourceSets {
    main { java.srcDirs = ['src/main/java'] }
    test { java.srcDirs = ['src/test/java'] }
}
您可以修改以在源目录所在的任何位置使用。
请注意,build.gradle(应用程序级别)中出现了相同的错误。我的案例的解决方案是:从
main.java.srcDirs
中删除
'src/test/java'

之前

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

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

Android Studio 2.0预览版4测试正常。实际上,在最新的Android Studio中,没有必要在SourceSet(如@falvick所述)中设置robolectric属性。

您在Android Studio中启用了单元测试吗?是的,在gradle中对??否文件->设置->gradle->实验:启用单元测试阅读此有用的资源