如何在 Flutter 移动应用项目中使用 testWidgets 测试画布

Posted

技术标签:

【中文标题】如何在 Flutter 移动应用项目中使用 testWidgets 测试画布【英文标题】:How to test canvas with testWidgets in a flutter mobile app project 【发布时间】:2020-11-17 11:23:04 【问题描述】:

我正在阅读有关如何使用 testWidgets 函数为 Flutter 应用小部件构建测试的信息,例如在创建新的 Flutter 项目时默认进行的以下测试:

// <project>/test/widget_test.dart
void main() 
  testWidgets('Counter increments smoke test', (WidgetTester tester) async 
    await tester.pumpWidget(CounterApp());
    // validate counter starts at zero
    expect(find.text('0'), findsOneWidget);
    
    await tester.tap(find.byIcon(Icons.add));
    await tester.pump();

    expect(find.text('0'), findsNothing);
    expect(find.text('1'), findsOneWidget);
  

但是如何测试画布以查看绘图/图案和段落是否正确显示?如果我用canvas.drawParagraph(...) 绘制一个段落,finder 对象会找到一个文本小部件吗?我在docs 中找不到这方面的信息。

【问题讨论】:

您可能想研究使用matchesGoldenFile 来比较屏幕截图。 【参考方案1】:

一般情况下(无论采用何种技术)测试 Canvas 都应使用可视化测试(或可视化回归测试)。

flutter_test 包提供了matchesGoldenFile 功能,使之成为可能。有一个很好的 tutorial on Flutter's Github 将指导您完成。

【讨论】:

以上是关于如何在 Flutter 移动应用项目中使用 testWidgets 测试画布的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter Web 中渲染 SVG?

如何在 Flutter 移动应用中将 Azure AD 用户登录到 Firebase?

如何在 Flutter 移动端、Web 端和窗口中添加条件导入?

如何在移动应用中更改颤振应用中的名称

如何将热图添加到 Flutter 移动应用程序

如何使用 Flutter 和 Rails 从头开始​​构建移动应用程序?