在 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 test
或 pub 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 get
或 dart 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 中运行所有单元测试的主要内容,如果未能解决你的问题,请参考以下文章