教程 > flutter 教程 > 阅读:47

flutter 测试——迹忆客-ag捕鱼王app官网

测试是应用程序开发生命周期中非常重要的阶段。 它确保了应用程序的高质量。 测试需要仔细的计划和执行。 这也是开发过程中最耗时的阶段。

dart 语言和 flutter 框架为应用程序的自动化测试提供了广泛的支持。

测试类型

通常,可以使用三种类型的测试过程来完整地测试应用程序。它们如下

单元测试

单元测试是测试应用程序的最简单方法。它基于确保类的一段代码(通常是函数)oa方法的正确性。但是,它并不能反映真实的环境,因此是查找错误的最少选择。

小部件测试

小部件测试基于确保小部件创建、呈现以及与其他小部件按预期交互的正确性。它更进一步,提供近乎实时的环境来查找更多错误。

集成测试

集成测试包括单元测试和小部件测试以及应用程序的外部组件,如数据库、web 服务等,它模拟或模拟真实环境以查找几乎所有的错误,但它是最复杂的过程。

flutter 为所有类型的测试提供支持。它为 widget 测试提供了广泛而独特的支持。在本章中,我们将详细讨论小部件测试。


小部件测试

flutter 测试框架提供了 testwidgets 方法来测试小部件。它接受两个参数 -

  • test description
  • test code
testwidgets('test description: find a widget', '');

涉及的步骤

小部件测试涉及三个不同的步骤 -

在测试环境中渲染小部件。

widgettester 是 flutter 测试框架提供的用于构建和渲染小部件的类。widgettester 类的 pumpwidget 方法接受任何小部件并将其呈现在测试环境中。

testwidgets('finds a specific instance', (widgettester tester) async { 
   await tester.pumpwidget(materialapp( 
      home: scaffold( 
         body: text('hello'), 
      ), 
   )); 
});

找到我们需要测试的小部件。

flutter 框架提供了许多选项来查找在测试环境中呈现的小部件,它们通常称为 finder。最常用的查找器是 find.text、find.bykey 和 find.bywidget。

find.text 查找包含指定文本的小部件。

find.text('hello')

find.bykey 通过特定键查找小部件。

find.bykey('home')

find.bywidget 通过其实例变量查找小部件。

find.bywidget(homewidget)

确保小部件按预期工作。

flutter 框架提供了许多选项来将小部件与预期的小部件匹配,它们通常称为matchers。我们可以使用测试框架提供的 expect 方法来匹配小部件,通过选择任何匹配器,我们在第二步中找到了我们的预期小部件。一些重要的匹配器如下。

findsonewidget - 验证找到单个小部件。

expect(find.text('hello'), findsonewidget);

findsnothing - 验证没有找到小部件

expect(find.text('hello world'), findsnothing);

findswidgets - 验证是否找到了多个小部件。

expect(find.text('save'), findswidgets);

findsnwidgets - 验证找到 n 个小部件。

expect(find.text('save'), findsnwidgets(2));

完整的测试代码如下 -

testwidgets('finds hello widget', (widgettester tester) async { 
   await tester.pumpwidget(materialapp( 
      home: scaffold( 
         body: text('hello'), 
      ), 
   )); 
   expect(find.text('hello'), findsonewidget); 
});

在这里,我们在正文中使用 text 小部件渲染了一个带有文本 hello 的 materialapp 小部件。然后,我们使用 find.text 查找小部件,然后使用 findsonewidget 进行匹配。


示例

让我们创建一个简单的 flutter 应用程序并编写一个小部件测试,以更好地理解所涉及的步骤和概念。

  • 在 android studio 中创建一个新的 flutter 应用程序,flutter_test_app。
  • 在测试文件夹中打开 widget_test.dart。它有一个示例测试代码,如下所示 -
testwidgets('counter increments smoke test', (widgettester tester) async {
   // build our app and trigger a frame. 
   await tester.pumpwidget(myapp()); 
   
   // verify that our counter starts at 0. 
   expect(find.text('0'), findsonewidget); 
   expect(find.text('1'), findsnothing); 
   
   // tap the ' ' icon and trigger a frame. 
   await tester.tap(find.byicon(icons.add)); 
   await tester.pump(); 
   
   // verify that our counter has incremented. 
   expect(find.text('0'), findsnothing); 
   expect(find.text('1'), findsonewidget); 
});

在这里,测试代码执行以下功能 -

  • 使用 tester.pumpwidget 渲染 myapp 小部件。
  • 使用 findsonewidget 和 findnothing 匹配器确保计数器最初为零。
  • 使用 find.byicon 方法查找计数器增量按钮。
  • 使用 tester.tap 方法点击计数器增量按钮。

确保使用 findsonewidget 和 findnothing 匹配器增加计数器。

让我们再次点击计数器增量按钮,然后检查计数器是否增加到 2。

await tester.tap(find.byicon(icons.add));
await tester.pump();
expect(find.text('2'), findsonewidget);

单击运行菜单。

单击 widget_test.dart 选项中的测试。这将运行测试并在结果窗口中报告结果。

flutter testing

查看笔记

扫码一下
查看教程更方便
网站地图