13

I am writing some Dart library and want to have it unittested. I created directory test and want to put my tests in here. Because I am going to have a lot of tests, I want to have them separated to multiple files. My questions is, what is the Dart convention, how to do that. I want to have my tests easily run all, however, I also want to be able to run just one file of tests.

What are your suggestions?

4

4 回答 4

19

将测试分成多个文件是很常见的。我包括一个你如何做到这一点的例子。

想象一下,您有 2 个带有测试的文件,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 中,您可以使用 import 语法来获取声明的库的内容。

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

于 2013-08-26T21:30:26.213 回答
5

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

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

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

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

$ pub global activate test_runner
$ pub global run test_runner

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

于 2015-02-08T17:57:10.553 回答
2

不必有多个文件来隔离测试 - 请参阅Running only a single testRunning a limited set of tests

要隔离测试,请更改test()solo_test()

因此,您可以将所有测试放在同一个文件中(或分成几个部分)。

于 2013-08-26T16:08:03.427 回答
2

如果一次运行一堆测试对任何人都有帮助,

我正在编写测试,但我的测试文件没有以 *_test.dart 所以我无法一次运行所有测试。

如果您想一次运行所有测试,则必须以 _test.dart 结束您的 dart 文件。

于 2019-07-26T15:32:35.447 回答