什么是单元测试?

17 Mar 2025 | 4 分钟阅读

单元测试是软件开发过程的一部分,其中测试应用程序的特定单元/组件。对每个组件进行单元测试对于提高应用程序性能是必要的。我们可以说一个单元是程序中可以逻辑上隔离在系统中的最小可测试块。在各种编程语言中,单个程序、子例程、函数、方法或类都可以表示为一个单元。一个模块中可以有许多单独的单元。在面向对象编程中,属于基类/超类、抽象类的方法可以表示为较小的单元。下图显示了测试的类型。

Dart Unit Testing

单元测试任务

单元测试任务如下所示。

  • 单元测试计划
    准备
    审查
    返工
    基线
  • 单元测试用例/脚本
    准备
    审查
    返工
    基线
  • 单元测试
    执行

单元测试的优势

下面给出了一些单元测试的优势。

  1. 我们可以轻松维护代码
  2. 它使代码更易于重用。
  3. 它使开发速度更快。
  4. 可以轻松调试代码。
  5. 它检测测试和修复缺陷的成本,因为任何错误都会在早期阶段被捕获。

Dart 单元测试

在 Dart 中,我们需要包含一个名为 "test" 的外部库,它提供了一种编写和运行单个单元测试的标准方法。可以使用以下步骤完成单元测试。

步骤 - 1:安装 "test" 包

要在我们的项目中包含单元测试,我们必须在当前工作项目中安装第三方包 "test"。让我们在我们的项目中打开 pubspec.yaml 并输入以下语句。

现在,右键单击 pubspec.yaml 文件,然后单击 Pub: get dependencies。这将在我们的项目中安装 "test" 包。

Dart Unit Testing

我们也可以使用以下命令安装它。

步骤 - 2:导入 "test" 包

输入以下行以在您的项目中导入 "test" 包。

步骤 - 3:编写测试用例

顶级 test() 函数由测试用例添加。在 test() 函数中,我们使用 expect() 函数进行测试断言。 expert() 函数接受两个参数 actualValueMatchValue

语法

测试用例组

我们可以使用 group() 函数创建多个测试用例组。它有助于根据某些条件对测试用例进行分组。每个组的描述在其测试描述的开头指定。

语法

语法如下所示。

示例 - 1(通过测试)

这是一个示例,我们在其中定义了一个用于单元测试的 add() 方法。它接受两个参数作为整数值,并返回一个表示总和的整数。要测试 add() 方法,请理解以下示例 -

步骤 - 1: 我们导入 test 包。

步骤 -2: 我们使用 test() 函数定义测试,它使用 expert() 函数来施加断言。

输出

00:00 +0: test to check add method 
00:00 +1: All tests passed! 

示例 - 2 不成功的测试

我们定义了 sub() 方法,该方法存在逻辑错误。让我们看一个例子。

输出

00:00 +0: test to check sub 
00:00 +0 -1: test to check sub 
Expected: <10> 
Actual: <9> 
package:test  expect 
bin\Test123.dart 18:5  main.<fn> 
   
00:00 +0 -1: test to check add method 
00:00 +1 -1: Some tests failed.  
Unhandled exception: 
Dummy exception to set exit code. 
#0  _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:938) 
#1  _microtaskLoop (dart:async/schedule_microtask.dart:41)
#2  _startMicrotaskLoop (dart:async/schedule_microtask.dart:50) 
#3  _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394) 
#4  _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414) 
#5  _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148) 

在上面的示例中,add() 函数已成功测试,但 sub() 函数由于逻辑错误而未通过单元测试。

分组测试用例

我们可以以组的形式编写多个测试用例。 group() 用于将这些方法组合在一起。它有助于编写更简洁的代码。

在下面的示例中,我们正在为 split() 函数和 trim() 函数编写测试用例。我们将这些函数组合在一起并将其命名为 String。

让我们理解以下示例 -

示例 -

输出

00:00 +0: String testing on split() method of string class 
00:00 +1: String testing on trim() method of string class 
00:00 +2: All tests passed

下一主题Dart HTML DOM