gpt4 book ai didi

android - 如何编写模拟 GPS 位置的 Espresso 测试并在 Google TeSTLab 中使用它们?

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:49 26 4
gpt4 key购买 nike

我用 Espresso Recorder 录制了一份 Espresso 测试。我想在我的应用中测试一些位置变化。

目前我正在用这段代码模拟位置:

LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy( Criteria.ACCURACY_FINE );

String mocLocationProvider = LocationManager.GPS_PROVIDER;//lm.getBestProvider( criteria, true );

lm.addTestProvider(mocLocationProvider, false, false,
false, false, true, true, true, 0, 5);
lm.setTestProviderEnabled(mocLocationProvider, true);

Location loc = new Location(mocLocationProvider);
Location mockLocation = new Location(mocLocationProvider); // a string
mockLocation.setLatitude(-26.902038); // double
mockLocation.setLongitude(-48.671337);
mockLocation.setAltitude(loc.getAltitude());
mockLocation.setTime(System.currentTimeMillis());
mockLocation.setAccuracy(1);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
}
lm.setTestProviderLocation( mocLocationProvider, mockLocation);

我还添加了调试 list 文件的权限:

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

但不幸的是我仍然遇到安全异常:

java.lang.SecurityException: mypackage.test from uid not allowed to perform MOCK_LOCATION

我想在 Google Firebase 测试实验室中使用模拟位置运行录制的测试用例。我该如何解决这个问题?

最佳答案

基本上,您必须在开发者选项中启用该应用程序(选择模拟位置应用程序)。由于您无法在 google plateform 上控制设备,因此您必须使用 ADB 命令来启用它。

appops set {yourPackageName} android:mock_location allow

例如,这是我在 @before 函数中为我的模拟位置测试所做的:

@Before
fun grantPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
with(getInstrumentation().uiAutomation) {
...
executeShellCommand("appops set " + InstrumentationRegistry.getTargetContext().packageName + " android:mock_location allow")
Thread.sleep(1000)
...
}
}
}

请注意,基于这种方法,您还可以为您的 gradle 任务创建一个 fragment ,以便在您插入任何新设备时自动在您的工作站上执行该任务。参见示例:How to set Allow Mock Location on Android Device before executing AndroidTest with uiautomator and espresso?

希望对您有所帮助!

关于android - 如何编写模拟 GPS 位置的 Espresso 测试并在 Google TeSTLab 中使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52440243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com