我正在写一些Dart库,并想让它单元测试。我创建了目录 test
并希望将我的测试放在这里。因为我将要进行大量测试,所以我希望将它们分成多个文件。我的问题是,Dart惯例是什么,如何做到这一点。我希望我的测试能够轻松运行,但是,我还希望能够只运行一个测试文件。
你有什么建议?
我正在写一些Dart库,并想让它单元测试。我创建了目录 test
并希望将我的测试放在这里。因为我将要进行大量测试,所以我希望将它们分成多个文件。我的问题是,Dart惯例是什么,如何做到这一点。我希望我的测试能够轻松运行,但是,我还希望能够只运行一个测试文件。
你有什么建议?
将测试分成多个文件是很常见的。我举了一个如何做到这一点的例子。
想象一下,你有两个带有测试的文件,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));
});
}
bar_test.dart看起来像这样:
library bar_test;
import 'package:unittest/unittest.dart';
void main() {
test('bar test', () {
expect("bar".length, equals(3));
});
}
您可以运行任一文件,并执行该文件中包含的测试。
我会创建类似于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();
}
如果执行了all_tests.dart,则执行foo_test.dart和bar_test.dart中的测试。
有一点需要注意:要使所有这些工作,您需要将foo_test.dart和bar_test.dart声明为库(请参阅每个文件的第一行)。然后,在all_tests.dart中,您可以使用导入语法来获取声明的库的内容。
这就是我组织大部分测试的方式。
将测试分成多个文件是很常见的。我举了一个如何做到这一点的例子。
想象一下,你有两个带有测试的文件,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));
});
}
bar_test.dart看起来像这样:
library bar_test;
import 'package:unittest/unittest.dart';
void main() {
test('bar test', () {
expect("bar".length, equals(3));
});
}
您可以运行任一文件,并执行该文件中包含的测试。
我会创建类似于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();
}
如果执行了all_tests.dart,则执行foo_test.dart和bar_test.dart中的测试。
有一点需要注意:要使所有这些工作,您需要将foo_test.dart和bar_test.dart声明为库(请参阅每个文件的第一行)。然后,在all_tests.dart中,您可以使用导入语法来获取声明的库的内容。
这就是我组织大部分测试的方式。
没有必要使用多个文件来隔离测试 - 请参阅 只运行一次测试 和 运行一组有限的测试。
要隔离测试,请更改
test()
至solo_test()
。
因此,您可以将所有测试放在同一个文件中(或分成几个部分)。
有一个工具可以做到这一点, 飞镖测试跑步者。该页面的摘录:
Dart Test Runner将在正确的环境(VM或浏览器)中自动检测并运行Dart项目中的所有测试。
它会检测以后缀为的文件中写入的任何测试 _test.dart
你的测试代码在哪里 main()
功能。检测和运行没有任何问题 单元测试 试验。
它很容易安装并运行它。只需两个命令:
$ pub global activate test_runner
$ pub global run test_runner
有关更多选项,请检查 飞镖测试跑步者 页。