BitBucket Pipeline远程CI/CD服务器测试中能否加载测试资源文件?
问题原因
你遇到的报错是工作目录不一致导致的路径拼接错误,CI环境本身完全支持加载测试用文件:
- 本地执行测试时,你的工作目录是项目根目录
my_repository,所以Directory.current.path拿到的路径拼接/test/assets/xxx.png后和实际文件路径匹配 - BitBucket Pipeline默认的工作目录为
/opt/atlassian/pipelines/agent/build,如果你的CI脚本没有切换到项目根目录,拼接出的路径就会缺失my_repository层级,和报错里显示的非法路径完全吻合
解决方案
以下方案任选其一即可修复:
- 调整CI执行路径
在bitbucket-pipelines.yml的测试执行步骤前,增加切换目录命令,和本地执行逻辑对齐:
script: - cd my_repository # 切换到项目根目录 - <你的测试执行命令>
- 替换为相对脚本的路径拼接(更稳妥)
不依赖当前工作目录,直接基于测试脚本的位置解析资源路径,避免不同环境的目录差异:
import 'dart:io'; import 'dart:io' show Platform; // 测试代码中加载资源的逻辑替换为: final testScriptDir = Platform.script.resolve('./').toFilePath(); final imagePath = testScriptDir + '../assets/test_image_gradient_black_white_3000x4000.png'; File myFile = File(imagePath);
- 增加调试步骤确认路径
如果以上方案未生效,可以在CI脚本中增加目录打印命令,确认资源实际存放位置:
pwd # 打印当前工作目录 ls -R # 打印当前目录下的所有文件结构
内容的提问来源于stack exchange,提问作者Joel Broström
相关产品推荐
相关产品推荐

