【问题标题】: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(或变体之一,例如connectedCheckconnectedInstrumentTest)。

    最后,您可能应该模拟出所有外部依赖项。您可能想查看一些模拟框架,例如 Mockito,或者只是自己做一些事情。

    【讨论】:

    • 这是指向正确方向的好点。虽然,我对问题的第二部分有疑问,即:如何测试模拟位置?我可以在具有ACCESS_MOCK_LOCATION 权限的应用程序中使用[setMockMode](developer.android.com/reference/android/location/…, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)),但是将其设置为库清单或测试清单会导致SecurityException,因为看起来权限没有被处理 - 就像根本一样。
    【解决方案2】:

    您为什么不创建一个使用您的库的简单应用程序?您可以使用 Genymotion 测试不同的位置(包括海拔高度):http://www.genymotion.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多