在 Dart 中运行所有单元测试

Posted

技术标签:

【中文标题】在 Dart 中运行所有单元测试【英文标题】:Running all unit tests in Dart 【发布时间】:2020-05-05 20:07:29 【问题描述】:

我正在开发一个 Flutter 项目,并试图找到构建测试的最佳方法。通常,我构建测试以反映正在测试的主项目的目录结构。

lib
 |models
 |providers
   |userprovider.dart
test
 lib
   |models
   |providers
     |userproviderShould.dart  

但是,我无法确定这种方法对于 Dart 代码是否不是最优的。测试项目中的每个文件似乎都需要一个main 方法,感觉很奇怪。我也不清楚如何运行整个测试套件。正在运行的 Flutter 测试 (flutter test) 似乎无法理解目录。运行 flutter test test/lib/providers 不起作用,而 flutter test test/lib/providers/userproviderShould.dart 运行。如果它不理解目录,它肯定不理解必须递归到目录中。

有没有一种方法可以解决这个问题,既不需要构建一个脆弱的入口点来手动包含所有其余的测试,也不需要编写一个 shell 脚本来单独运行每个文件?

【问题讨论】:

【参考方案1】:

如果您希望 flutter testpub run test 执行文件而不手动将其路径作为参数传递给命令,则文件必须:

位于/test 文件夹内 其名称必须以_test.dart为后缀

任何没有这个_test的东西都不会被命令行执行。

【讨论】:

但是如何使用单个命令从 Flutter 项目中的不同模块运行所有测试? @sagarsuri 看看我的回答:***.com/a/69123248/915875 @sagarsuri 您可以使用flutter test . packages/* 运行项目中的所有测试(只要您的所有模块都位于packages 目录中)【参考方案2】:

要运行项目中的所有单元测试,请在项目的根目录中的终端中键入以下命令之一:

颤振项目

flutter test

飞镖项目

dart test

注意事项

Dart 项目曾经是pub run test。您可能仍然可以这样做,但 dart test 是新的做法,而且更容易记住。 test package documentation 如果您之前没有使用过,您可能需要运行 flutter pub getdart pub get 来检索测试包。

【讨论】:

【参考方案3】:

使用 Flutter 2.5(也许在下面,虽然我没有检查过),显然,您可以使用任何目录名称作为参数,它将运行其中的所有 **/*_test.dart 文件。

所以:flutter test lib 成功了!您可以将其他参数传递给命令,只要目录名称是最后一个参数 (flutter test --no-pub --coverage lib)。

文档:https://pub.dev/packages/test#running-tests

【讨论】:

以上是关于在 Dart 中运行所有单元测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在单元测试中访问 Dart 类

如何防止在 dart 中使用 expectAsync 的单元测试进展?

如何在浏览器中运行颤振单元测试?

你如何在 Dart 中对异常进行单元测试?

Dart 单元测试应因异常而失败

在 Android Studio 中运行所有单元测试