Flutter代码覆盖率测试插件test_coverage的使用

Flutter代码覆盖率测试插件test_coverage的使用

介绍

test_coverage 是一个简单的命令行工具,用于从 Dart VM 测试中收集测试覆盖率信息。它在本地开发期间生成覆盖率报告时非常有用。

使用方法

1. 添加依赖

在项目的 pubspec.yaml 文件中添加 test_coverage 作为开发依赖:

dev_dependencies:
  test_coverage: ^0.4.2

然后运行以下命令安装依赖:

pub get

2. 运行测试覆盖率工具

在项目的根目录下运行以下命令来执行测试覆盖率工具:

pub run test_coverage

执行完成后,结果将保存在 coverage/lcov.info 文件中。

3. 生成 HTML 报告

如果你的系统上已经安装了 lcov 工具(对于 macOS,可以通过 brew install lcov 安装),你可以使用以下命令生成 HTML 报告:

genhtml -o coverage coverage/lcov.info
# 在 macOS 上打开生成的 HTML 文件:
open coverage/index.html

集成

生成的 coverage/lcov.info 文件可以直接被 Codecov 命令行工具使用,无需额外步骤。

此库尚未与 Coveralls 进行过测试。

生成徽章图像

Coverage

覆盖率徽章的 SVG 图像会自动生成并保存到项目的根目录下的 coverage_badge.svg 文件中。你可以在 GitHub 的 README.md 中添加它,如下所示:

Coverage


如果你不需要徽章,可以在运行测试覆盖率工具时使用 `--no-badge` 标志。

## 已知限制

- 此库专为运行 Dart VM 测试而设计。它未经过测试,也不太可能适用于编译为 JavaScript 的 Dart 代码。对于 Flutter,无需使用此工具,因为它支持通过 `flutter test --coverage` 收集覆盖率信息。

## 工作原理

该工具执行以下步骤:

### 1. 生成 `test/.test_coverage.dart` 文件(测试所有脚本)

扫描你的 `test/` 目录以查找所有 `*_test.dart` 文件,并创建 `test/.test_coverage.dart` 文件,该文件导入所有找到的测试文件并在同一文件(和进程)中运行相应的 `main()` 函数,从而简化覆盖率信息的收集。

建议将此文件添加到 `.gitignore` 中。

以下是 `test/.test_coverage.dart` 的示例:

```dart
// 自动由 test_coverage 生成,请勿手动编辑。
// 考虑将其添加到 .gitignore。

import 'some_test.dart' as some_test;
import 'nested/other_test.dart' as other_test;
import 'some_other_test.dart' as some_other_test;

void main() {
  some_test.main();
  other_test.main();
  some_other_test.main();
}

2. 执行测试

使用的命令如下:

dart --pause-isolates-on-exit --enable_asserts --enable-vm-service \
  test/.test_coverage.dart

更多关于Flutter代码覆盖率测试插件test_coverage的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter代码覆盖率测试插件test_coverage的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


test_coverage 是一个用于 Flutter 项目的代码覆盖率测试插件。它可以帮助你生成代码覆盖率报告,以便更好地了解你的测试覆盖情况。以下是使用 test_coverage 插件的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 test_coverage 插件的依赖:

dev_dependencies:
  test_coverage: ^0.5.0

然后运行 flutter pub get 来获取依赖。

2. 运行测试并生成覆盖率报告

你可以使用 test_coverage 插件来运行测试并生成覆盖率报告。在终端中运行以下命令:

flutter test --coverage

这个命令会运行所有的测试,并生成一个 coverage 文件夹,里面包含 lcov.info 文件,这是覆盖率数据的原始文件。

3. 生成 HTML 报告

lcov.info 文件是机器可读的,但你可以使用 genhtml 工具将其转换为更易读的 HTML 报告。首先,确保你已经安装了 lcov 工具:

  • 在 macOS 上,你可以使用 Homebrew 安装:

    brew install lcov
    
  • 在 Ubuntu 上,你可以使用 apt 安装:

    sudo apt-get install lcov
    

然后,运行以下命令生成 HTML 报告:

genhtml coverage/lcov.info -o coverage/html

这会在 coverage/html 文件夹中生成一个 HTML 报告。你可以打开 index.html 文件来查看详细的覆盖率信息。

4. 查看覆盖率报告

打开 coverage/html/index.html 文件,你可以在浏览器中查看代码覆盖率报告。报告会显示每个文件的覆盖率百分比,以及哪些代码行被测试覆盖,哪些没有被覆盖。

5. 集成到 CI/CD

你可以将覆盖率测试集成到你的 CI/CD 流程中。例如,在 GitHub Actions 中,你可以添加以下步骤来运行测试并生成覆盖率报告:

name: Flutter CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v1
        with:
          flutter-version: '2.5.0'
      - run: flutter pub get
      - run: flutter test --coverage
      - run: genhtml coverage/lcov.info -o coverage/html
      - uses: actions/upload-artifact@v2
        with:
          name: coverage-report
          path: coverage/html

6. 其他选项

test_coverage 插件还提供了一些其他选项,例如排除某些文件或目录。你可以在 pubspec.yaml 中配置这些选项:

test_coverage:
  exclude:
    - 'lib/**/*.g.dart'
    - 'lib/**/*.freezed.dart'
回到顶部