如何在flutter集成测试中授予权限?

问题描述 投票:0回答:1

我已经使用指南firebase 设置了集成测试。我使用以下命令在本地运行相同的测试:

  flutter build apk --debug --flavor dev
  ./gradlew app:assembleDevDebugAndroidTest
  ./gradlew app:connectedDevDebugAndroidTest -Ptarget=integration_test/main_test.dart

我能够成功运行测试,但如果是新设备或重新安装了应用程序,apk 会请求权限。

我将以下代码添加到

flutter_app/android/app/src/androidTest/java/com/domain/myapp/MainActivityTest.java
以实现GrantPermissionRule,如上所述,但它仍然不起作用。

@RunWith(FlutterTestRunner.class) public class MainActivityTest { @Rule public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class, true, false); @Rule public GrantPermissionRule mRuntimePermissionRule = GrantPermissionRule.grant(android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_MEDIA_VIDEO, android.Manifest.permission.READ_MEDIA_IMAGES, android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.CAMERA, android.Manifest.permission.ACCESS_FINE_LOCATION ); }

有没有办法在 Flutter Instrumentation 测试中授予权限?

android flutter android-instrumentation flutter-integration-test
1个回答
0
投票
在驱动程序文件夹 test_driver/integration_test 中: 下面的示例是接受位置权限,类似地,您也可以使用 android 的 adb 添加其他权限

import 'dart:io'; import 'package:integration_test/integration_test_driver.dart'; future<void> main() async { final adbPath = path.join( androidHomePath, 'platform-tools', Platform.isWindows ? 'adb.exe' : 'adb', ); await process.run( 'adbPath', [ 'shell', 'pm', 'grant', 'com.example.<your app name>', // todo: update this 'android.permission.access_coarse_location' ], ); await process.run( 'adbPath', [ 'shell', 'pm', 'grant', 'com.example.<your app name>', // todo: update this 'android.permission.READ_CONTACTS' ], ); // todo: add more permissions as required await integrationdriver(); }
    
© www.soinside.com 2019 - 2024. All rights reserved.