微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter 集成测试的热重载?

如何解决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

这基本上没问题,但它在每次执行时都会编译,这非常耗时。我是否有机会运行集成测试并拥有与常规开发相同的热重载功能?如何实现这一目标?

或者有其他解决方法吗?我正在考虑先将测试代码编写为单元/小部件测试,然后在执行正确后将其移植到集成测试中。

解决方法

差不多。

部分可能使用 integration_test 包。

使用 run 命令,您至少可以?热重启 - 这在编写测试时节省了大量时间。 您可以对项目和测试代码进行更改并反映更改。

从终端执行:

flutter run integration_test/tests/your_test.dart

然后,您应该可以通过按 SHIFT + r 来热重启(以终端为焦点)。

还可以将要测试的测试文件添加到 IDE 运行配置中,然后像“普通”项目一样从那里运行或调试它。

示例伪造的“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);
  });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。