27

我正在尝试在 Android 项目中进行测试(junit 和 robolectric),但我完全卡住了。我的主要问题是我用 gradle 找到的所有测试都以某种方式引入了 java 插件,然后我得到了这个错误:

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

我目前看到的唯一出路是拆分为测试和应用项目——但我想避免这种情况。任何示例/提示将不胜感激!

官方文档中没有提到单元测试——只有仪器测试——但我希望单元测试能够快速获得结果。

4

5 回答 5

27

You don't need the Java plugin, since the Android will take care of what you need mostly, from what I've seen so far.

I managed to get my Robolectric and junit tests running via this man's blog: http://tryge.com/2013/02/28/android-gradle-build/

My build.gradle file looks like this (where my test files are in the {projectdir}/test directory.

...
// 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
于 2013-07-02T16:49:09.157 回答
7

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 工具项目站点

于 2015-02-18T07:55:58.723 回答
1

本指南可能会有所帮助 - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio

最新的 gradle 测试应该在 androidTest 目录下

同样在你的 gradle.build 中:

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

还要在defaultConfig {

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

}

于 2014-11-18T03:16:06.047 回答
0

这仅对我有用:

androidTestCompile 'net.bytebuddy:byte-buddy-android:0.7.8'
于 2016-03-27T16:00:10.030 回答
0

您应该使用此文档 https://developer.android.com/training/testing/unit-testing/local-unit-tests.html 它描述了在开发人员机器上运行的非仪器单元测试,而不是在 android 设备上。

于 2015-12-28T02:50:29.923 回答