Горячая перезагрузка для интеграционного теста Flutter?

Я настроил тестирование интеграции Flutter для своего проекта, как определено здесь: https://flutter.dev/docs/testing/integration-tests

Я использовал следующие devDepencendies:

      integration_test: ^1.0.0
flutter_test:
  sdk: flutter
flutter_driver:
  sdk: flutter

Тестовый драйвер - это просто C&P со страницы проекта:

      import 'package:integration_test/integration_test_driver.dart';

Future<void> main() => integrationDriver();

Финальный тест:

      void main() {
    IntegrationTestWidgetsFlutterBinding.ensureInitialized();

    testWidgets('CPCSA-TC-016: Vehicle Card with no alert',
    (WidgetTester tester) async {
        app.main();
        // Execute test code. 
    });
}

Наконец, я провожу тесты с

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

В принципе, это нормально, но он компилируется при каждом выполнении, а это занимает очень много времени. Есть ли шанс, что я смогу запустить интеграционный тест и получить ту же функцию горячей перезагрузки, что и для обычной разработки? Как этого добиться?

Или есть другое решение? Я думаю о том, чтобы сначала написать тестовый код как тест модуля / виджета и просто перенести его в интеграционные тесты, как только выполнение будет правильным.

1 ответ

Почти.

Частично это возможно с помощью пакета integration_test .

С runкоманду вы можете как минимум 🔥 Hot Restart - что экономит много времени при написании тестов. Вы можете вносить изменения как в свой проект, так и в тестовый код, и эти изменения отражаются.

Из терминала выполните:

      flutter run integration_test/tests/your_test.dart

После этого вы сможете выполнить горячий перезапуск (с фокусировкой на терминале), нажав SHIFT + r.

Пример фиктивного теста "your_test.dart":

      import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized(); 
  testWidgets('Test test testing', (WidgetTester tester) async {
    expect(true, isTrue);
  });
}
Другие вопросы по тегам