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

时间:2013-08-26 15:52:15

标签: dart

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

你有什么建议?

4 个答案:

答案 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 testRunning 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文件。