如何获取被测文件的覆盖率报告?

时间:2018-04-27 16:20:15

标签: dart code-coverage

我试图获取受测试文件的覆盖率报告,但我失败了。

我使用以下文件创建了一个名为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选项,结果是我获得了所有Dart文件的格式化报告,而不仅仅是我自己的。

1 个答案:

答案 0 :(得分:1)

默认情况下,format_coverage会收集导入的Dart来源的完全传递关闭的范围。要限制向特定文件子集的报告,它支持--report-on选项。

--report-on选项根据已解析的源绝对路径进行过滤。在您的情况下,传递--report-on=/Users/ralphbergmann/development/dart/FooBar/lib应该将coverage集合限制到该目录。