在 Dart 中运行所有单元测试

sti*_*mms 9 dart flutter flutter-test

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

lib
 |models
 |providers
   |userprovider.dart
test
 lib
   |models
   |providers
     |userproviderShould.dart  
Run Code Online (Sandbox Code Playgroud)

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

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

Rém*_*let 23

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

  • /test文件夹内
  • 它的名字必须以 _test.dart

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

  • @sagarsuri您可以使用“flutter test”运行项目中的所有测试。packages/*` (只要所有模块都位于 `packages` 目录中) (3认同)
  • 但是如何使用单个命令运行 flutter 项目中不同模块的所有测试呢? (2认同)

Sur*_*gch 8

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

颤振项目

flutter test
Run Code Online (Sandbox Code Playgroud)

飞镖项目

dart test
Run Code Online (Sandbox Code Playgroud)

笔记

  • Dart 项目曾经是pub run test. 您可能仍然可以这样做,但这dart test是一种新的方法,也更容易记住。
  • 测试包文档
  • 如果您以前没有运行flutter pub getdart pub get检索测试包,您可能需要运行或检索测试包。


Nic*_*bal 5

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

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

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