Android:如何对定位服务进行(自动化)功能测试



我正在工作的应用程序是由位置服务驱动的。开车时把手机连在笔记本电脑上并不总是可行的(而且越来越复杂)。

我如何为我的应用程序编写自动化功能测试(谷歌显示UI相关测试)?我明白,我需要注入值到以下回调(因为我的应用程序是由位置管理器驱动)

 @Override
 public void onLocationChanged(Location location) {}

在java应用程序中,我将创建一个具有我的应用程序实例并调用方法的单元。但是,a)我该如何为Android应用程序(没有主方法,一切都是由onCreate()驱动)b)如果上述功能是Android Service的一部分,它会如何变化

在我们工作的地方,我们使用powermockit。我不是它的超级粉丝,但我完全理解您对单元测试的失望。这里有一个很好的教程:http://www.johnmullins.co/blog/2015/02/15/beginners-guide-to-using-mockito-and-powermockito-to-unit-test-java/

基本上,PowerMockito允许您编写一堆Powermock单元测试。这些测试将允许您模拟响应,并允许您测试代码。你甚至可以手动调用"onLocationChanged"。

我不喜欢PowerMockito的原因是,这意味着你必须像Android操作系统一样行事。您可以创建虚拟位置响应并测试代码是否执行了正确的操作,但是用字段条件测试代码要困难得多。如果某个手机在返回的位置上有问题,PowerMock永远不会帮你抓住它。

在android genymotion模拟器中使用MockLocationProvider

见下面的链接:-https://mobiarch.wordpress.com/2012/07/17/testing-with-mock-location-data-in-android/

最新更新