Горячая перезагрузка для интеграционного теста 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);
});
}