我正在使用新的单元测试支持在android项目上编写junit测试http://tools.android.com/tech-docs/unit-testing-support.
虽然单元测试在"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
编译单元测试的任务似乎不依赖于编译库代码的任务。以下为我修复了它:
afterEvaluate {
tasks['assembleDebugUnitTest'].dependsOn(tasks['assembleDebug'])
}
我使用运行测试
./gradlew testDebug
如果你不想修改build.gradle
,在命令行上手动指定assembleDebug
任务也可以:
./gradlew assembleDebug testDebug
在我的android库项目中,我也未能运行测试。我所做的是创建一个使用库的测试应用程序,并在应用程序中编写调用库方法的测试。
这可能不是理想的解决方案,但这是我们实现这一目标的方式。
看看这里https://github.com/nenick/AndroidStudioAndRobolectric
在那里,您可以对库和风格运行单元测试。不,你不需要像Gaurav Vashisth
所说的那样使用Robolectric。如果你愿意,你可以。
以下是库模块中JUnit测试的一个示例