【问题标题】:How to check font text on Flutter golden test如何在 Flutter 金色测试中检查字体文本
【发布时间】:2020-03-25 00:53:18
【问题描述】:

我正在为垂直蒙古文字制作package。我有一个需要显示特殊字体的自定义小部件。我正在尝试编写一个测试来显示蒙古文字已正确呈现。

在模拟器上是这样的:

但是黄金文件看起来是这样的:

如果黄金测试只是给我豆腐,我无法验证蒙古语是否正确呈现。

这是我的测试:

testWidgets('MongolText renders font', (WidgetTester tester) async {

  await tester.pumpWidget(
    MaterialApp(
      home: Scaffold(
          appBar: AppBar(title: Text('My App')),
          body: Stack(
            children: <Widget>[
              Center(
                child: MongolText('ᠮᠣᠩᠭᠣᠯ'),
              ),
            ],
          )
      ),
    ),
  );

  await tester.pumpAndSettle();

  await expectLater(
    find.byType(MaterialApp),
    matchesGoldenFile('golden-file.png'),
  );
});

有没有办法解决这个问题?

我已经阅读了这两篇关于黄金测试的文章:

【问题讨论】:

  • @Suragch 找到解决方案了吗?
  • @SebastianRoth,不,我能做的最好的事情就是使用小部件测试查看渲染的文本大小是否发生了变化。

标签: testing flutter


【解决方案1】:

Flutter 测试目前仅支持一种字体,咳咳。

从 eBay 试用这个包:https://pub.dev/packages/golden_toolkit

【讨论】:

    【解决方案2】:
    【解决方案3】:

    由于包的版本为0.2.0-dev,您可以使用loadAppFonts() 方法自动从pubspec.yaml 或您的项目所依赖的任何包中加载字体资源。

    source

    0.2.0-dev

    改进了加载字体资源的机制。消费者不再 需要提供一个目录来读取 .ttf 文件。

    他们现在可以简单地拨打:await loadAppFonts(),包裹将 自动从它们的 pubspec.yaml 或任何 他们依赖的包。

    现在您的测试可能如下所示:

    testWidgets('Text renders', (tester) async {
      // Load fonts
      await loadAppFonts();
    
      // Pump your test widget
      await tester.pumpWidget(
        MaterialApp(
          home: Scaffold(
            body: Text('My text'),
          ),
        ),
      );
    
      // Compare image file
      await screenMatchesGolden(tester, 'golden-file');
    });
    

    【讨论】:

      猜你喜欢
      • 2021-02-23
      • 2020-10-14
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多