我在一个gitlab环境中运行flutter test的单元测试错误。下面是一个完整的清单,我已经做了一些事情,试图解决这个问题,但到目前为止还没有找到解决方案。我在github/颤振中打开了一个问题,想知道它是否真的是颤振中的一个bug,但是如果有任何其他建议,我会很高兴收到您的消息。如果在这个问题中需要的话,所有日志都是GitHub问题。
复制步骤
由于专有的原因,我无法粘贴我所有的颤振代码。我将尽可能详细地帮助解决方案,并可以自由地要求更多的细节。
主要目标是让flutter test在gitlab上运行,在码头图像上运行.因此,我在我的MacBook上创建了一个本地坞映像(Dockerfile包含在下面,并被推到docker )来再现和调试失败。
docker pull isorensen/flutter-ubuntu:1.12.13-stabledocker run -v [flutter_project_root_directory]:/app -it --rm isorensen/flutter-ubuntu:1.12.13-stableflutter test。至少运行两次,因为如下所示,第一个命令可能成功,实际上会导致进一步的测试失败。预期结果:
00:09 +14: All tests passed!
实际结果:
00:12 +0 -1: faq: check if has values [E]
type 'MappedListIterable<MapEntry<int, dynamic>, dynamic>' is not a subtype of type 'List<dynamic>' in type cast
package:credifit/API/client.dart 307:80 ApiClient.getFaqs
00:12 +0 -2: faq: check first default question [E]
type 'MappedListIterable<MapEntry<int, dynamic>, dynamic>' is not a subtype of type 'List<dynamic>' in type cast
package:credifit/API/client.dart 307:80 ApiClient.getFaqs
00:18 +10 -3: getUserLoanInfos [E]
Instance of 'Fatal'
package:sdkgen_runtime/http_client.dart 30:5 SdkgenHttpClient._throwError
package:sdkgen_runtime/http_client.dart 82:15 SdkgenHttpClient.makeRequest
00:19 +10 -4: simulateInstallments [E]
type 'MappedListIterable<MapEntry<int, dynamic>, dynamic>' is not a subtype of type 'List<dynamic>' in type cast
package:credifit/API/client.dart 313:236 ApiClient.simulateInstallments
00:19 +10 -4: Some tests failed.似乎是什么问题
由于这个问题不发生在我的本地环境(运行macOS Catalina,详见下面的日志),我注意到,在我的项目文件夹中运行fswatch,在两个环境中运行flutter test (共享相同的项目目录),只有两个文件被“触摸”(不一定改变):- .packages - .testfile.dill.track.dill。
在两个文件上运行diff之后,无论是在flutter test之前还是之后,都注意到只有testfile.dill.track.dill被更改了。
最后,当我执行下面的序列时,它成功地运行了flutter test,由此得出的结论是,在testfile.dill.track.dill更改后,flutter test在对接映像中使用了flutter test大小写。
flutter test上运行macOS (共享与码头映像相同的项目目录)cp build/testfile.dill.track.dill ~以保存文件的副本flutter test (第一次,测试成功运行,但它改变了测试file.dill.track.dill)diff build/testfile.dill.track.dill ~/testfile.dill.track.dill
结果:Binary files build/testfile.dill.track.dill and /Users/eduardosorensen/testfile.dill.track.dill differflutter test
上述测试失败。cp ~/testfile.dill.track.dill build/testfile.dill.track.dill (恢复已更改的文件)flutter test
上面的测试是成功的,尽管它再次更改了testfile.dill.track.dill,并且在进一步的测试中再次失败。发布于 2020-02-06 12:19:44
这是一个颤振包版本的问题。
当您创建一个停靠程序映像并运行flutter pub get时,它将从头开始构建包,从而升级一些包,只需进行一些小的更新。
这可能会导致本地映像和坞映像之间的版本不同。
因此,请确保您使用相同的环境运行测试,即本地环境和dockerized环境。
https://stackoverflow.com/questions/59884477
复制相似问题