【问题标题】:Test Android library with Gradle使用 Gradle 测试 Android 库
【发布时间】:2014-03-19 18:47:46
【问题描述】:
测试 Android 库的正确流程是什么?我的图书馆严重依赖 android.location 和 Google Play Services 融合的位置提供程序,因此我希望能够测试位置更改。
在src下添加instrumentTest文件夹后,怎么办? Gradle 用户指南 simply says 可以像常规应用程序一样测试库,但由于我没有 Activity 如何实例化我的库类?
【问题讨论】:
标签:
android
gradle
android-studio
android-testing
android-gradle-plugin
【解决方案1】:
您应该使用InstrumentationTestCase(和子类,取决于您的需要)。
您可以通过在测试用例中调用getInstrumentation().getContext() 来获取Context。
使用 Gradle 时,您只需将测试类放在 /src/instrumentTest 中,然后通过创建 Android 测试 运行配置来运行它们。您还可以从命令行运行测试:./gradlew check(或变体之一,例如connectedCheck 或connectedInstrumentTest)。
最后,您可能应该模拟出所有外部依赖项。您可能想查看一些模拟框架,例如 Mockito,或者只是自己做一些事情。
【讨论】:
-
这是指向正确方向的好点。虽然,我对问题的第二部分有疑问,即:如何测试模拟位置?我可以在具有ACCESS_MOCK_LOCATION 权限的应用程序中使用[setMockMode](developer.android.com/reference/android/location/…, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)),但是将其设置为库清单或测试清单会导致SecurityException,因为看起来权限没有被处理 - 就像根本一样。