如何在dart中多个文件中编写多个单元测试?

Sam*_*pak 11 dart

我正在写一些Dart库,并希望将它单元化.我创建了目录,test并希望将测试放在这里.因为我将要进行大量测试,所以我希望将它们分成多个文件.我的问题是,Dart的惯例是什么,如何做到这一点.我希望我的测试能够轻松运行,但是,我还希望能够只运行一个测试文件.

你有什么建议?

Sha*_*uli 13

将测试分成多个文件是很常见的.我举了一个如何做到这一点的例子.

想象一下,你有两个带有测试的文件,foo_test.dart,bar_test.dart,它们包含你程序的测试.foo_test.dart看起来像这样:

library foo_test;

import 'package:unittest/unittest.dart';

void main() {
  test('foo test', () {
    expect("foo".length, equals(3));
  });
}
Run Code Online (Sandbox Code Playgroud)

bar_test.dart看起来像这样:

library bar_test;

import 'package:unittest/unittest.dart';

void main() {
  test('bar test', () {
    expect("bar".length, equals(3));
  });
}
Run Code Online (Sandbox Code Playgroud)

您可以运行任一文件,并执行该文件中包含的测试.

我会创建类似于all_tests.dart文件的东西,它会从foo_test.dart和bar_test.dart导入测试.以下是all_tests.dart的样子:

import 'foo_test.dart' as foo_test;
import 'bar_test.dart' as bar_test;

void main() {
  foo_test.main();
  bar_test.main();
}
Run Code Online (Sandbox Code Playgroud)

如果执行了all_tests.dart,则执行foo_test.dart和bar_test.dart中的测试.

有一点需要注意:要使所有这些工作,您需要将foo_test.dart和bar_test.dart声明为库(请参阅每个文件的第一行).然后,在all_tests.dart中,您可以使用导入语法来获取声明的库的内容.

这就是我组织大部分测试的方式.


rch*_*ria 5

有一个工具可以做到这一点,Dart Test Runner。该页面的摘录:

Dart Test Runner 将在正确的环境(VM 或浏览器)中自动检测并运行 Dart 项目中的所有测试。

_test.dart它检测在函数内以测试代码所在位置为后缀的文件中编写的任何测试main()它在检测和运行单元测试时没有任何问题。

安装和运行它非常容易。只需两个命令:

$ pub global activate test_runner
$ pub global run test_runner
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请查看Dart Test Runner页面。