我们在Flutter的屏幕快照(黄金)测试中发现的一个问题是,它们可能对不同平台上的差异敏感-例如,在一个开发人员的Linux机器上通过的测试可能在另一个Macbook上失败。为了减轻这些差异,我们希望能够在Docker容器中运行黄金测试,以便可以在开发机器和CI之间完美地再现测试。
如果我重新克隆Flutter应用程序存储库,然后运行:
docker run -it --rm -v /path-to-repo:/code cirrusci/flutter:v1.12.13-hotfix.8 bash
然后我可以在容器内愉快地运行flutter test
等。完美!
但是,如果我尝试执行相同的操作,则会遇到麻烦,但是这次使用的是我一直在本地工作的存储库。
首先,我在容器内收到警告:
Warning! This package referenced a Flutter repository via the .packages file that is no longer available. The repository from which the 'flutter' tool is currently executing will be used instead.
running Flutter tool: /home/cirrus/sdks/flutter
previous reference : /my-install-of-flutter/flutter
然后出现一系列编译器错误,如下所示:
Compiler message:
/tmp/flutter_test_listener.JONVES/listener.dart:6:8: Error: Error when reading '/my-install-of-flutter/lib/flutter/packages/flutter_test/lib/flutter_test.dart': No such file or directory
import 'package:flutter_test/flutter_test.dart';
我想这是因为.packages
被Flutter读取了,但是在容器内部并不适用(因为这与Flutter的安装方式完全不同)。有没有办法让Flutter忽略.packages
,以便我可以在容器内正确运行这些测试?