如何获取正在测试的文件的覆盖报告



我正在尝试获取正在测试的文件的覆盖范围报告,但我正在失败。

我创建了一个名为Foobar的新的DART库项目,其中包含以下文件:

FooBar/
├── lib
│   ├── FooBar.dart
│   └── src
│       └── FooBar_base.dart
└── test
    └── FooBar_test.dart

要生成覆盖范围报告,我致电dart --pause-isolates-on-exit --enable-vm-service=47114 test/FooBar_test.dart,在另一个控制台上,我致电pub global run coverage:collect_coverage --uri=http://127.0.0.1:47114/ -o coverage.json --resume-isolates

使用这两个命令,我得到了一个巨大的JSON文件。

coverage软件包也有一个格式化器。所以我致电pub global run coverage:format_coverage -i coverage.json。我得到了一个不错的格式输出,但是错误的文件。它打印测试文件,但没有打印在测试中的文件。

$ pub global run coverage:format_coverage -i coverage.json
/Users/ralphbergmann/development/dart/FooBar/test/FooBar_test.dart
       |import 'package:FooBar/FooBar.dart';
       |import 'package:test/test.dart';
       |
      1|void main() {
      2|  group('A group of tests', () {
       |    Awesome awesome;
       |
      2|    setUp(() {
      1|      awesome = new Awesome();
       |    });
       |
      2|    test('First Test', () {
      2|      expect(awesome.isAwesome, isTrue);
       |    });
       |  });
       |}

如何获得有关正在测试的文件的格式报告?我知道coverage:format_coverage命令有一些选择,但它们没有解决我的问题。例如,我添加了--packages=.packages选项,结果是我获得了所有飞镖文件的格式报告,而不仅是我自己的。

默认情况下,format_coverage收集了导入的DART源的完整及时闭合的覆盖范围。为了将报告限制为特定的文件子集,它支持--report-on选项。

--report-on选项基于源的已解决的绝对路径过滤器。在您的情况下,通过--report-on=/Users/ralphbergmann/development/dart/FooBar/lib应将覆盖范围限制为该目录。

fyi:

我使用此脚本进行飞镖覆盖范围:

#!/bin/bash
mkdir -p ./coverage
dart run test --coverage=./coverage
format_coverage --packages=.packages --report-on=lib --report-on=example --report-on=bin -l -o ./coverage/lcov.info -i ./coverage
genhtml -o ./coverage ./coverage/lcov.info
open ./coverage/index.html

也许您需要激活format_coverage

dart pub global activate coverage

最新更新