Запуск нескольких тестовых примеров в тестовой лаборатории Firebase

#flutter #integration-testing #firebase-test-lab

#flutter #интеграция-тестирование #firebase-test-lab

Вопрос:

Я пытаюсь запустить свой интеграционный тест Firebase Test Lab .

 flutter build apk -t lib/main_dev.dart
./gradlew app:assembleAndroidTest -Ptarget=lib/main_dev.dart
./gradlew app:assembleDebug -Ptarget=integration_test/login_test.dart
 

Этот код генерирует app-debug-androidTest.apk app-debug.apk и, как только я загружаю их в Test Lab тест, выполняется отлично.

Теперь проблема в том, что у меня много тестовых файлов integration_test . Я не уверен, как создать a app-debug-androidTest.apk , который включает в себя все тестовые integration_test примеры.

Я попробовал следующее:

 flutter build apk -t lib/main_dev.dart
./gradlew app:assembleAndroidTest -Ptarget=lib/main_dev.dart
./gradlew app:assembleDebug -Ptarget=test_driver/integration_test.dart
 

но этот застрявший тест на черном экране, что для меня странно, но правильное поведение, поскольку при запуске интеграционного теста на локальном устройстве нам также необходимо указать цель вместе с драйвером.

Итак, для локального у меня есть скрипт

 flutter drive 
  --driver=test_driver/integration_test.dart 
  --target=integration_test/login_test.dart

flutter drive 
  --driver=test_driver/integration_test.dart 
  --target=integration_test/register_test.dart
 

который запускает весь код интеграции.

Итак, мой вопрос в том, как загрузить все тестовые примеры.

Или мы должны создавать сборки для каждого тестового примера

 ./gradlew app:assembleDebug -Ptarget=integration_test/login_test.dart
 

затем загрузите его в тестовую лабораторию, а затем снова

 ./gradlew app:assembleDebug -Ptarget=integration_test/register_test.dart
 

и снова загрузить?

Ответ №1:

Я только что столкнулся с той же проблемой. Для дальнейшего использования другими людьми, то, что я сделал, это импортировал все тесты в один файл all_tests.dart .

Допустим, структура каталогов такова

 integration_test/
  test1.dart
  test2.dart
  test3.dart
  all_tests.dart
 

В all_tests.dart я импортировал все тесты в:

 import 'test1.dart' as test1;
import 'test2.dart' as test2;

void main() {
  test1.main();
  test2.main();
  ...
}
 

Комментарии:

1. Это работает? Я запускаю только первый файл, затем получаю сообщение «Все тесты пройдены». а остальные пропускаются.

2. РЕДАКТИРОВАТЬ: это действительно работает, но не в том случае, если вы используете скриншот, описанный здесь: github.com/flutter/flutter/tree/master/packages /…

3. У меня это не работает, говорится, что «Тесты не найдены». Не могли бы вы поделиться более подробной информацией? Кстати, он работает только с интеграционным тестом flutter (flutter drive)

Ответ №2:

У меня была такая же проблема, когда не было реального способа вернуться к чистому состоянию приложения после запуска теста. Очистка данных приложения между тестами мне очень помогла.

С

 import 'dart:io';
import 'package:path_provider/path_provider.dart';
 
 tearDown(() async {
  final filesDirPath = (await getApplicationSupportDirectory()).path;
  if (Directory(filesDirPath).existsSync()) {
    await Directory(filesDirPath).delete(recursive: true);
  }
});
 

Могут быть и другие каталоги, которые нужно удалить getTemporaryDirectory() , но обычно именно в них сохраняются пользовательские данные.