使用Travis CI进行Flutter集成测试

问题描述 投票:0回答:2

1。问题摘要

我想要一个Travis CI设置,该设置可以让我在Android和iOS环境中运行flutter driver测试。为此,我希望我必须在不同的环境中安装Flutter,Android和iOS。

2。我到目前为止有什么

我在该主题上能够找到的大多数帖子都非常过时,或者具有令人难以置信的复杂设置。在我的搜索中不断出现的一些是:

  • Test Flutter apps on Travis,作者Yegor Jbanov。这一部分涉及单元和小部件测试(flutter test),但不涉及集成测试。

    • 这是从2017年初开始的,Travis CI可能简化了它的API,因为我设法使其仅与此兼容:

      language: dart
      
      dart:
        - stable
      
      dart_task:
        - dartfmt
      
      install:
        - git clone https://github.com/flutter/flutter.git -b stable
      
      script:
        - ./flutter/bin/flutter doctor
        - ./flutter/bin/flutter test
      
  • 我发现非常有用的一种资源是.travis.yml in the Flutter samples repo。不过,这里的设置对我来说似乎非常复杂。
  • 我能最接近我想要的东西类似于Maurice McCabe的.travis.yml
    • 同样,这似乎过于复杂和过时。

3。我心目中的草图

我在前面提到的示例中的Flutter unit, widget and integration testing with IOS and Android emulators on Travis-CIscript步骤可以用install替换为jobs。这样,每个阶段将代表一种步骤。单元和窗口小部件合为一个阶段,对Android和iOS的集成测试为另外两个阶段,这与Maurice McCabe和Flutter的示例相似。例如:

stage

如果我可以为jobs: include: - stage: Flutter Test language: dart os: linux install: git clone $FLUTTER_GITHUB -b stable before_script: - ./flutter/bin/flutter doctor script: - ./flutter/bin/flutter test - stage: Integration Test on Android os: linux dist: trusty language: android android: # the things here are what probably needs to be fixed components: - build-tools-28.0.3 - android-28 install: git clone $FLUTTER_GITHUB -b stable before_script: - ./flutter/bin/flutter doctor script: - ./flutter/bin/flutter drive --target=test_driver/app.dart 任务创建一个stage,从组织的角度讲也不错。

testing flutter continuous-integration integration-testing travis-ci
2个回答
1
投票

您可以看一下这个项目

  • dartfmt

我认为它具有您正在寻找的所有组件。它是Dart程序包,在解决方案中具有Flutter的Sqlite Scaffolding Generator @ Dart Framework ORM M8集成项目。

CI管道是为Travis CI构建的(主要基于Maurice example)。 McCabe's article文件可能包含您需要的所有部分。


0
投票

1。概述

感谢@MirceaMatei和Maurice McCabe的帮助。

  1. 我还无法使Android Integration Tests正常工作(下面代码的最后travis.yml,但是至少iOS可以正常工作。
    • 由于版本和许可证不同,Android很难正确使用,而Apple则要好得多。
  2. 您将在下面找到的代码是我正在处理的自定义单声道回购设置的一部分。
    • 文件夹结构由stageapp文件夹组成。
  3. 我还没有按这两个文件夹划分代码覆盖率,因此该设置当前将代码覆盖率从一个文件夹覆盖到另一个文件夹。
  4. 使用顶级packages部分使Travis在每个阶段重复该设置,从而避免了在每个阶段重复进行此操作。

我正在共享我当前的(尽管不完整)设置,但将通过install进行持续改进,这是与社区进行交互以改进代码的一种比StackOverflow更好的方法-这不是其目的。

总的来说,我认为Travis CI在Flutter方面确实是丢球-也许在一般情况下是Android。 this Github Gist是我最近接触过的许多从业人员大肆宣传的一种更简单的选择,即Codemagic,它还提供代码签名和自动部署到iOS和Android应用程序商店。

2。有用的资源

我真的不喜欢Travis集成测试文档。创建纯Android应用程序的人也提出了类似的问题。

无论如何,这是我在搜索过程中发现的一些有用资源:

  1. Issue Comment on "Error: Target id is not valid. Use 'android list targets' to get the target ids."
  2. “Invalid --abi armeabi-v7a for the selected target” with Google APIs
  3. Is there a way to start android emulator in Travis CI build?
  4. Travis-CI Android 28 licenses have not been accepted
  5. Android 28 licenses have not been accepted
  6. Flutter Samples Travis Setup
  7. @MirceaMatei's Travis Setup Recommendation
  8. Travis Building Android Projects Documentation

3。代码

[请不要在此处发布代码改进建议,而应在Maurice McCabe's Unit and Integration Tests with Travis Article on Medium中。每当有用的迭代到达时,我都会在自己下方更新the Github Gist代码。

yaml
© www.soinside.com 2019 - 2024. All rights reserved.