首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在码头图像上运行“颤振试验”导致testfile.dill.track.dill改变,然后在CI环境下导致测试失败

在码头图像上运行“颤振试验”导致testfile.dill.track.dill改变,然后在CI环境下导致测试失败
EN

Stack Overflow用户
提问于 2020-01-23 17:49:40
回答 1查看 335关注 0票数 1

我在一个gitlab环境中运行flutter test的单元测试错误。下面是一个完整的清单,我已经做了一些事情,试图解决这个问题,但到目前为止还没有找到解决方案。我在github/颤振中打开了一个问题,想知道它是否真的是颤振中的一个bug,但是如果有任何其他建议,我会很高兴收到您的消息。如果在这个问题中需要的话,所有日志都是GitHub问题。

复制步骤

由于专有的原因,我无法粘贴我所有的颤振代码。我将尽可能详细地帮助解决方案,并可以自由地要求更多的细节。

主要目标是让flutter test在gitlab上运行,在码头图像上运行.因此,我在我的MacBook上创建了一个本地坞映像(Dockerfile包含在下面,并被推到docker )来再现和调试失败。

  1. 运行docker pull isorensen/flutter-ubuntu:1.12.13-stable
  2. 运行docker run -v [flutter_project_root_directory]:/app -it --rm isorensen/flutter-ubuntu:1.12.13-stable
  3. 在Docker映像上运行flutter test。至少运行两次,因为如下所示,第一个命令可能成功,实际上会导致进一步的测试失败。

预期结果:

00:09 +14: All tests passed!

实际结果:

代码语言:javascript
复制
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大小写。

  1. flutter test上运行macOS (共享与码头映像相同的项目目录)
  2. 运行cp build/testfile.dill.track.dill ~以保存文件的副本
  3. 在docker上运行flutter test (第一次,测试成功运行,但它改变了测试file.dill.track.dill)
  4. 运行diff build/testfile.dill.track.dill ~/testfile.dill.track.dill 结果:Binary files build/testfile.dill.track.dill and /Users/eduardosorensen/testfile.dill.track.dill differ
  5. 在码头vm上运行flutter test 上述测试失败。
  6. 运行cp ~/testfile.dill.track.dill build/testfile.dill.track.dill (恢复已更改的文件)
  7. 在码头vm上运行flutter test 上面的测试是成功的,尽管它再次更改了testfile.dill.track.dill,并且在进一步的测试中再次失败。
EN

回答 1

Stack Overflow用户

发布于 2020-02-06 12:19:44

这是一个颤振包版本的问题。

当您创建一个停靠程序映像并运行flutter pub get时,它将从头开始构建包,从而升级一些包,只需进行一些小的更新。

这可能会导致本地映像和坞映像之间的版本不同。

因此,请确保您使用相同的环境运行测试,即本地环境和dockerized环境。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59884477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档