在API23 +

时间:2016-08-01 16:53:30

标签: android testing

我想编写一个检测测试来验证使用API​​23 +上的FusedLocation API请求位置更新的应用程序的行为。

我有一些要求:

  • 测试必须在模拟器(AVD)中运行,因为我希望测试在Travis CI或圈子CI等持续集成服务中运行。
  • 我想测试使用UI Automator正确弹出Marshmallow权限请求对话框。
  • 我想通过使用断言检查requestLocationUpdates()返回的Location对象来确保我的代码正常工作。

由于要求在模拟设备上进行测试,因此我们必须使用FusedLocation.setMockLocation()来获取位置,否则requestLocationUpdates()将不会产生任何结果。

到现在为止,我遇到了这些问题:

  • setMockMode()和setMockLocation()都需要位置权限:这意味着我必须在我的测试代码中请求位置权限,一旦我的测试代码到达requestLocationUpdates()调用,它就不会再次请求权限(因为它已经有了它)因此不允许我用UI Automator测试权限请求对话框。
  • setMockLocation()需要在开发人员选项中手动设置“允许模拟位置”,因此持续集成将失败,因为每次构建都会创建一个新的模拟器,并且默认情况下将禁用“允许模拟位置”。

在我看来,我已经走到了尽头。请证明我错了!

0 个答案:

没有答案