1

为每个屏幕都有一个单独的集成测试文件,我想用一个命令来运行所有的集成测试,比如“flutter tests”。我查看了文档,但找不到任何方法来做到这一点。这也会导致 firebase 测试实验室 apk 出现问题。要创建一个 android 测试 apk,我只能指定一个测试文件路径来创建 apk。

// flutter build generates files in android/ for building the app
flutter build apk
./gradlew app:assembleAndroidTest
./gradlew app:assembleDebug -Ptarget=integration_test/whattodo_tests.dart

目前,我找到了两种解决方法。

  1. 我已经将我的所有测试移到了一个带有组 test的单个 dart 文件中。但是这种解决方法不能很好地扩展。对于 5-10 测试,它工作正常。但是假设我们有 50-75 个测试,那么在单个文件中导航和理解测试将是一团糟。
  2. 创建一个脚本来一一运行所有测试。这可能适用于我们自己的 CI 管道,但这不适用于 firebase 测试实验室。

有没有人能够解决这个问题或任何更好的解决方案?

4

2 回答 2

2

我在 GitHub 上遇到过一个具有这种结构的项目,我认为这可能会有所帮助..

制作公用文件并在该公用文件上导入不同的文件、文件夹或模块进行测试

main.dart

import 'package:integration_test/integration_test.dart';
import 'about_us_page_test.dart' as about;
import 'add_label_page_test.dart' as label;
import 'add_project_page_test.dart' as project;
import 'add_task_page_test.dart' as tasks;
import 'completed_tasks_page_test.dart' as tasks_completed;
import 'home_page_test.dart' as home;
import 'whattodo_tests.dart' as whattodo;

void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();
  whattodo.main();
  home.main();
  tasks.main();
  tasks_completed.main();
  project.main();
  label.main();
  about.main();
}

run all这些测试

flutter drive \
   --driver=test_driver/integration_test_driver.dart \
   --target=integration_test/main.dart
于 2021-03-26T08:00:39.627 回答
0

现在有更好的方法来做到这一点。只需像这样使用测试命令。

运行所有测试

flutter test integration_test

运行特定测试

flutter test integration_test/app_test.dart

参考

于 2021-10-12T09:00:11.720 回答