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

时间:2015-03-20 09:43:22

标签: android unit-testing junit android-gradle

我正在使用新的单元测试支持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

3 个答案:

答案 0 :(得分:7)

看起来编译单元测试的任务不依赖于编译库代码的任务。 以下为我解决了这个问题:

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

我使用

运行测试
./gradlew testDebug

如果您不想修改build.gradle,请在命令行上手动指定assembleDebug任务也应该这样做:

./gradlew assembleDebug testDebug

答案 1 :(得分:2)

在我的android库项目中,我也无法运行测试。我所做的是创建一个测试应用程序,该应用程序使用该库并在调用库方法的应用程序中编写测试。

这可能不是理想的解决方案,但这是我们开展工作的方式。

答案 2 :(得分:1)

请查看https://github.com/nenick/AndroidStudioAndRobolectric

在那里你可以对库和口味进行单元测试。并且你不需要像Gaurav Vashisth那样使用Robolectric。如果你愿意,你可以。

Here is an example of JUnit test in a library module