img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

测试驱动开发过程

测试驱动开发的过程往往是迭代和循环的(即过程将处于循环中,直到所提到的条件或测试用例通过)。

TDD主要分为三个阶段:

  1. 红色阶段 在这个阶段,开发者需要为需要创建的特性编写测试场景。最初,由于尚未创建功能或小部件,它将返回错误。
  2. 绿色阶段 特性代码的实际开发或小部件的创建在此阶段完成。这一步是在有或没有最佳代码编写的情况下完成的;它仅确保创建了功能并且测试用例成功。
  3. 重构阶段 为测试和实际功能代码编写的代码的重构或优化需要在此阶段完成。

为您的应用程序实施 TDD 的步骤

  1. 文件夹结构
  • 删除默认 Flutter 项目创建的测试文件,即widget_test.dartFlutter 应用程序中的样板测试代码文件。
  • 根据您的应用程序的要求创建一个子文件夹。如果您想实现测试驱动开发,请包括与创建子文件夹结构域层、数据层和表示层相关的所有逻辑和 UI 组件,否则会继续为每个案例创建单个文件。
  • 应使用screen_name_test.dart如下图所示的命名模式创建测试文件:
  1. 完成应用程序所需的测试
  • 根据您的要求(数据、域和演示或单元测试/小部件测试/集成/安全测试)确定您可能需要添加到项目中的测试类型
  1. 编写测试用例
  • 这里我以atsign基金会的at_theme_flutter pub.dev包为例,详细演示实现步骤:

  • 根据这里的包要求,我们决定只进行小部件测试,因为不需要任何单元或安全测试。因此,作为第一步,我们根据命名约定创建了一个文件夹。

测试用例

最初,我们采用了一个色卡小部件。在这里,我们需要编写一个测试用例来检查预期的颜色是否已传递给小部件。在控制台中输入以下代码:

void main() {
  Widget _wrapWidgetWithMaterialApp({required Widget colorCard}) {
    return TestMaterialApp(home: Builder(builder: (BuildContext context) {
      SizeConfig().init(context);
      return colorCard;
    }));
  }

import 'package:at_common_flutter/at_common_flutter.dart';
import 'package:at_theme_flutter/src/widgets/color_card.dart';

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import '../test_material_app.dart';

void main() {
  Widget _wrapWidgetWithMaterialApp({required Widget colorCard}) {
    return TestMaterialApp(home: Builder(builder: (BuildContext context) {
      SizeConfig().init(context);
      return colorCard;
    }));
  }

  /// Functional test cases for Color Card Widget
  group('Color Card Widget Tests:', () {
    // Test Case to Check Color Card is displayed
    final colorCard = ColorCard(color: Colors.orange, isSelected: true);
    testWidgets("Color Card is displayed", (WidgetTester tester) async {
      await tester.pumpWidget(
          _wrapWidgetWithMaterialApp(colorCard: colorCard));
      expect(find.byType(ColorCard), findsOneWidget);
    });
  });
}

以下是一些重要的元素:

  • group()=> 它接受一组测试。它还包含参数描述和函数体。
  • testWidget()=> 它在 Flutter 测试环境中运行回调;回调可以是同步的或异步的。它包含描述和函数体等参数。
  • tester.pumpWidget()=> 它用于从给定的小部件呈现 UI。
  • expect()=> 它用于指定小部件的预期行为。
  1. 运行flutter测试命令

在控制台中输入以下命令:

flutter test

如果您的测试用例倾向于通过所有用例,则认为 Flutter 测试成功,否则检查错误,重构代码并重新运行命令,直到通过所有测试用例。

结论

在 Flutter 应用程序中实施测试驱动开发是可靠的,并且可以最大限度地减少错误。另一方面,这似乎很耗时并且增加了代码的总行数。因此,使用这种技术来构建您的应用程序完全取决于您的要求和需要。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

需要这份系统化的资料的朋友,可以戳这里获取

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐