Android 单元测试支持在 android 库模块中不起作用

Android unit test support does not work in android library modules

我正在使用新的单元测试支持 http://tools.android.com/tech-docs/unit-testing-support 在 android 项目上编写 junit 测试。

虽然单元测试 运行 在 'com.android.application' 模块上完美,但它们总是在 'com.android.library' 模块上失败。这在 http://tools.android.com/tech-docs/unit-testing-support 中没有记录。所以我怀疑我是不是罪魁祸首

当我在库模块上编写这些测试时,测试无法在模块上找到 类 并且总是给出以下错误:

package does not exist

error: cannot find symbol

android 单元测试支持目前处于试验阶段,但是否有解决方案。

更新

我已将此问题添加到 android 问题跟踪器 https://code.google.com/p/android/issues/detail?id=161038

在我的 android 图书馆项目中,我也未能获得测试 运行。我所做的是创建一个使用库的测试应用程序,并在调用库方法的应用程序中编写测试。

这可能不是理想的解决方案,但却是我们实现它的方式。

看这里https://github.com/nenick/AndroidStudioAndRobolectric

在那里您可以 运行 对库和风格进行单元测试。不,您不需要按照 Gaurav Vashisth 所述使用 Robolectric。如果你愿意,你可以。

Here is an example of JUnit test in a library module

看起来编译单元测试的任务不依赖于编译库代码的任务。 以下为我修复了它:

afterEvaluate {
    tasks['assembleDebugUnitTest'].dependsOn(tasks['assembleDebug'])
}

我运行 测试使用

./gradlew testDebug

如果您不想修改您的 build.gradle,在命令行上手动指定 assembleDebug 任务也可以解决问题:

./gradlew assembleDebug testDebug