[Flutter翻译]用Github Actions自动进行Flutter测试

117 阅读2分钟

原文地址:swerdlowben.medium.com/automating-…

原文作者:swerdlowben.medium.com/

发布时间:2020年12月23日-3分钟阅读

概述

当在一个大型团队或开源项目中工作时,代码审查可能会变得非常耗时,特别是当你不得不阅读大量写得不好的代码时。减轻这种负担的一种方法是设置自动代码分析、格式化和UI测试。

本教程将介绍如何设置Github Actions来检查代码质量、格式化,并运行UI测试来验证拉取请求。

本资源库中的所有代码都将在这里以模板形式提供:github.com/theswerd/fl…

先决条件

步骤

在Github仓库的根目录下创建一个Flutter App。

flutter create --project-name myapp .

创建一个名为analysis_options.yaml的文件。这个文件将用于自定义分析器,使其忽略安装在动作中的flutter依赖。

这个文件应该是这样的。

analyzer:
  exclude:
    - flutter/**

创建Github行动

Github Actions存储在.github/workflows文件夹中,所以对于测试来说,创建一个名为:.github/workflows/tests.yaml的文件。

部件。

名称:

名称是Github Actions文件的第一部分,它定义了文件中动作的名称。

name: TEST FLUTTER APP

关于

On部分定义了何时运行这个动作。每当有拉取请求时,这个动作都需要运行,以便验证其中的代码。

on:
  push:
    pull_request:
      branches:
        - main

环境

Env定义了动作的全局环境变量。为了使其易于更新,应将Flutter版本放在环境变量中。

env:
  FLUTTER_VERSION: "1.22.1"

作业

作业部分定义了将要完成的作业。翩翩起舞测试作业看起来像这样。

jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Install Flutter
        run: git clone https://github.com/flutter/flutter.git --depth 1 -b $FLUTTER_VERSION flutter
      - name: Add Flutter to Path
        run: echo "$GITHUB_WORKSPACE/flutter/bin" >> $GITHUB_PATH
      - name: Install Dependencies
        run: flutter pub get
      - name: Flutter Analyze
        run: flutter analyze --no-pub
      - name: Check Flutter Formatting
        run: flutter format lib/** --set-exit-if-changed
      - name: Run Flutter Tests
        run: flutter test --no-pub

分解:

  • Checkout Repository检查出Repository的代码到Action上
  • 安装Flutter从Github上的Flutter Repository获取Flutter代码。
  • 将 Flutter 添加到 Github Action 的路径中,因此它可以使用 flutter cli。
  • 安装应用程序的依赖关系
  • 运行flutter analyze来分析代码,检查是否有未使用的导入等错误。
  • 运行 flutter format lib/** --set-exit-if-changed 来检查代码的格式是否正确。如果代码格式化得不好,将抛出一个错误。
  • 运行flutter测试来运行在你的应用程序的测试目录中定义的测试。

齊心協力

name: TEST FLUTTER APP
on:
  push:
    pull_request:
      branches:
        - main
env:
  FLUTTER_VERSION: "1.22.1"
jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2
      - name: Install Flutter
        run: git clone https://github.com/flutter/flutter.git --depth 1 -b $FLUTTER_VERSION _flutter
      - name: Add Flutter to Path
        run: echo "$GITHUB_WORKSPACE/_flutter/bin" >> $GITHUB_PATH
      - name: Install Flutter Dependencies
        run: flutter pub get
      - name: Flutter Analyze
        run: flutter analyze --no-pub
      - name: Check Flutter Formatting
        run: flutter format lib/** --set-exit-if-changed
      - name: Run Flutter Tests
        run: flutter test --no-pub

自动测试在行动

当有人提出一个糟糕的Pull Request时。

写得不好的代码无法通过测试

当有人提出代码请求,代码质量好的时候。

写得好的代码能通过测试

闭幕

这些自动化测试可以帮助你保持高代码质量,降低你的工作。希望对你今后的flutter项目有所帮助。

本资源库中的所有代码都将以模板形式在这里提供:github.com/theswerd/fl…


通过www.DeepL.com/Translator(免费版)翻译