Firebase Test Lab报错:测试APK不含清单指定的测试运行器类
解决方案
1. 统一测试Runner配置
你的测试类标注了@RunWith(FlutterTestRunner.class),但Android配置里的testInstrumentationRunner仍为androidx.test.runner.AndroidJunitRunner,导致配置与实际使用的Runner不匹配。需修改以下两处:
- 修改
android/app/build.gradle的defaultConfig:
defaultConfig { testInstrumentationRunner "dev.flutter.plugins.integration_test.FlutterTestRunner" }
- 同步更新AndroidManifest中的instrumentation节点:
<instrumentation android:name="dev.flutter.plugins.integration_test.FlutterTestRunner" android:targetPackage="com.hello.integration"> </instrumentation>
2. 补充集成测试依赖
在android/app/build.gradle的dependencies块中添加Flutter集成测试所需依赖:
androidTestImplementation 'dev.flutter.plugins:flutter_plugin_android_lifecycle:2.0.15' androidTestImplementation project(':integration_test')
注:若项目未初始化集成测试模块,先执行flutter create --template=plugin integration_test完成配置。
3. 修正构建脚本与测试命令
调整构建步骤
原脚本构建的是普通AndroidTest APK,Flutter集成测试需关联指定测试文件构建,修改脚本为:
pushd android flutter build apk --debug ./gradlew app:assembleAndroidTest -Ptarget=integration_test/app_test.dart popd
优化Firebase测试命令
移除--use-orchestrator参数(FlutterTestRunner与该工具兼容性较差),命令修改为:
gcloud firebase test android run --type instrumentation \ --app build/app/outputs/apk/debug/app-debug.apk \ --test build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk \ --timeout 3m \ --results-bucket=gs://project_bucket_name \ --results-dir=tests/firebase
4. 清理冲突测试代码
删除androidTest目录下的MainActivityTest类,Flutter集成测试无需编写原生Android测试类,该文件会与Flutter测试Runner产生冲突。
验证配置有效性
用aapt工具检查测试APK是否包含正确的Runner类:
aapt dump xmltree build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk AndroidManifest.xml | grep "FlutterTestRunner"
若能匹配到对应节点,说明配置生效。
内容的提问来源于stack exchange,提问作者mobi_dev
相关产品推荐
相关产品推荐

