【问题标题】:Flutter test: How to check the background color of a widget during integration testFlutter 测试:如何在集成测试期间检查小部件的背景颜色
【发布时间】:2021-09-29 06:45:54
【问题描述】:

我有一个简单的 Flutter 应用程序 available on github,它具有浅色和深色主题,并带有“主题切换”按钮。在主页上,我有一个 Scaffold 小部件,它从主题中获取它的背景颜色属性。有没有办法在使用driver 进行集成测试期间切换主题前后检查脚手架的背景颜色?

尝试在切换主题前后检查活动主题,但失败:

 group('Theme Test', () {
    final themeButton = find.byValueKey('Button');
    final themeProvider = ThemeProvider();

    test('Switch between light and dark themes', () async {
      expect(themeProvider.mode, ThemeMode.light); //check initial theme
      await driver.tap(themeButton);
      expect(themeProvider.mode, ThemeMode.dark);  //check new theme
    });
  });

Full integration test here

我的目标是在使用driver 切换主题之前和之后获取 Scaffold 的背景颜色

【问题讨论】:

    标签: flutter flutter-test


    【解决方案1】:

    您正在测试组中创建 ThemeProvider() 的新实例。驱动程序正在创建您的应用,但不会使用您在测试中创建的 ThemeProvider()。

    在 Flutter Driver 中与正在运行的应用程序进行通信并不容易(您必须使用驱动程序 request_data,但我不建议针对此问题使用)。

    您可能希望使用 integration_test 包查看 Flutter 的新集成测试。新的集成测试是小部件测试和颤振驱动测试的组合。更多信息在这里; https://flutter.dev/docs/testing/integration-tests

    新的集成测试包可以与您的应用创建的 ThemeProvider() 实例进行通信(如果您将其设置为可访问)。然后可以读取 themeProvider.mode 值/检查实际背景颜色是否改变。

    【讨论】:

    • 非常感谢! ?
    猜你喜欢
    • 2020-03-30
    • 1970-01-01
    • 2022-06-15
    • 2021-04-11
    • 1970-01-01
    • 2019-12-20
    • 2021-05-21
    • 1970-01-01
    • 2019-10-31
    相关资源
    最近更新 更多