针对android项目使用gradle进行junit测试

针对android项目使用gradle进行junit测试,android,junit,gradle,junit4,robolectric,Android,Junit,Gradle,Junit4,Robolectric,我试图让测试(junit和robolectric)在Android项目中运行,但我完全被卡住了。我的主要问题是,我在gradle中发现的所有测试都以某种方式引入了java插件,然后我得到了以下错误: The 'java' plugin has been applied, but it is not compatible with the Android plugins. 目前我看到的唯一出路是分为测试和应用程序项目,但我希望避免这种情况。如有任何示例/提示,将不胜感激 在本文中,没有提到单元测

我试图让测试(junit和robolectric)在Android项目中运行,但我完全被卡住了。我的主要问题是,我在gradle中发现的所有测试都以某种方式引入了java插件,然后我得到了以下错误:

The 'java' plugin has been applied, but it is not compatible with the Android plugins.
目前我看到的唯一出路是分为测试和应用程序项目,但我希望避免这种情况。如有任何示例/提示,将不胜感激


在本文中,没有提到单元测试——只有仪器测试——但我希望单元测试能够快速得到结果

您不需要Java插件,因为根据我目前看到的情况,Android将满足您的主要需求

我设法通过这个人的博客运行了我的Robolectric和junit测试:

我的build.gradle文件如下所示(其中我的测试文件位于{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
这本指南可能会有所帮助-

最新等级测试应在androidTest目录下进行

同样在gradle.build中:

dependencies {
     androidTestCompile 'junit:junit:4.+'
}
还可以将这些添加到defaultConfig{

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

}AndroidStudio和新的Android Gradle插件现在提供官方的单元测试支持

Android Studio 1.1+和Android Gradle插件版本1.1.0支持此功能+

依赖项现在可以声明为testCompile:

dependencies {
  testCompile 'junit:junit:4.12'
  testCompile "org.mockito:mockito-core:1.9.5"
}
更多详情如下:。

您应该使用此文档
它描述了在开发人员机器上运行的非仪器化单元测试,而不是在android设备上运行的测试。

这只是对我有用的:

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

谢谢!这与Android Studio结合起来对你有用吗?我很想从IDE运行测试,但这对meI还不起作用。我得到“package Android.test不存在”这应该运行单元测试和编译吗?由于Anroid Build Tools v0.11,类文件的路径已更改。
unitTestCompile文件(“$project.buildDir/intermediates/classes/release”)
@Chris应该改用debug文件夹:
unitTestCompile文件($buildDir/intermediates/classes/debug”)
,但要指出这一点很好。请注意,从AS 1.1和Android Gradle插件1.1.0开始,就有官方的单元测试支持。不。如果您的单元测试对Android没有依赖关系或只有简单的依赖关系,您应该在本地开发机器上运行测试。