如何从项目自定义Feature包中运行Flutter集成测试?
问题描述
我的项目结构如下:
my_project/ features/ feat1/ integration_test/ ... feat2/ integration_test/ ... ... lib/ integration_test/ ... ...
features是我为项目创建的自定义包,运行该目录下的集成测试时遇到以下错误:
package:flutter_tools/src/test/integration_test_device.dart 52:7 IntegrationTestTestDevice.start TestDeviceException(No application found for TargetPlatform.ios.)
但主lib目录下integration_test中的测试运行完全正常。请问有没有办法直接从features目录运行测试?
解决方法
指定主应用入口运行测试
由于features下的子包没有独立的应用入口,运行测试时需要关联主项目的应用上下文。在子包的integration_test目录下执行命令时,通过--target参数指定主项目的入口文件:flutter test your_test_file.dart --target=../../lib/main.dart注意调整
--target后的路径,确保能正确指向主项目的main.dart文件。给子包配置主项目依赖
在每个feat子包的pubspec.yaml中添加对主项目的依赖,让测试能识别应用环境:dependencies: flutter: sdk: flutter my_project: path: ../../配置完成后,直接在子包目录下运行常规测试命令即可:
flutter test integration_test/your_test_file.dart统一管理测试文件
如果不想额外配置,可以将features下的测试文件迁移到主项目的integration_test目录中,按功能分类存放,比如:my_project/ lib/ integration_test/ feat1/ ... feat2/ ... ...这样就能直接用标准命令运行所有测试,无需特殊配置。
内容的提问来源于stack exchange,提问作者Ovidiu Uşvat
相关产品推荐
相关产品推荐

