Разрешить запускать всю папку тестов в новых интеграционных тестах flutter - как в обычных модульных тестах

У меня есть отдельный файл интеграционных тестов для каждого экрана, и я хочу запустить все интеграционные тесты с помощью одной команды, например «флаттер-тесты». Я просмотрел документ, но не смог найти способ сделать это. Это также вызывает проблему с apk лаборатории тестирования firebase. Чтобы создать тестовый apk для Android, я могу указать только один путь к тестовому файлу для создания 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. Я переместил все свои тесты в один файл дротика с групповым тестом . Но это обходное решение плохо масштабируется. На 5-10 тест работает нормально. Но допустим, если у нас есть 50-75 тестов, тогда будет сложно ориентироваться и понимать тесты в одном файле.
  2. Создайте сценарий для запуска всех тестов один за другим. Это может работать в нашем собственном конвейере CI, но не будет работать в лаборатории тестирования firebase.

Кто-нибудь может решить эту проблему или какое-либо лучшее решение?

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

Теперь есть лучший способ сделать это. Просто используйте тестовую команду вот так.

Чтобы запустить весь тест

      flutter test integration_test

Чтобы запустить конкретный тест

      flutter test integration_test/app_test.dart

Ссылка .

Другие вопросы по тегам