我正在写一些Dart库,并希望将其单元测试。我创建了目录test
,并希望将测试放在这里。因为我将要进行大量测试,所以我希望将它们分成多个文件。我的问题是,Dart的惯例是什么,如何做到这一点。我希望我的测试能够轻松运行,但是,我还希望能够只运行一个测试文件。
你有什么建议?
答案 0 :(得分: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));
});
}
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中,您可以使用导入语法来获取声明的库的内容。
这是我组织大部分测试的方式。
答案 1 :(得分:2)
没有必要使用多个文件来隔离测试 - 请参阅Running only a single test和Running a limited set of tests。
要隔离测试,请将
test()
更改为solo_test()
。
因此,您可以将所有测试放在同一个文件中(或分成几个部分)。
答案 2 :(得分:1)
有一个工具正是这样做的,Dart Test Runner。该页面的摘录:
Dart Test Runner将在正确的环境(VM或浏览器)中自动检测并运行Dart项目中的所有测试。
它会检测以_test.dart
为后缀的文件中写入的任何测试,其中您的测试代码位于main()
函数内。检测和运行unittest测试没有任何问题。
安装它并运行它非常容易。只需两个命令:
$ pub global activate test_runner
$ pub global run test_runner
如需更多选项,请查看Dart Test Runner页。
答案 3 :(得分:0)
如果一次运行一堆测试对任何人有帮助,
我正在编写测试,但是我的测试文件名称并非以*_test.dart
结尾
因此,我无法一次运行所有测试。
如果您想一次运行所有测试,则必须以_test.dart结束dart文件。