Dart - 单元测试

Dart - 单元测试 首页 / Dart入门教程 / Dart - 单元测试

单元测试涉及测试应用程序的每个单独的单元,它可以帮助开发人员在不运行整个复杂应用程序的情况下测试小的函数。

Dart 外部库名为" test",提供了编写和运行单元测试的标准方法。

Dart单元测试包括以下步骤-

第1步    -  安装"test"软件包

要在当前项目中安装第三方软件包,您将需要 pubspec.yaml 文件,要安装测试包,请首先在 pubspec.yaml 文件中输入以下内容-

dependencies: 
test:

输入后,右键单击 pubspec.yaml 文件并获取依赖项,它将安装"测试" 软件包,下面给出的是 WebStorm 编辑器中相同内容的屏幕截图。

Unit Testing

也可以从命令行安装软件包,在终端中输入以下内容-

pub get

第2步    -  导入test.dart测试包

import "package:test/test.dart";

第3步    -  编写测试

使用顶级函数 test()指定测试,而使用 expect()函数进行 test断言,要使用这些方法,应将它们安装为 pub 依赖项。

test("描述 of the test ", () {  
   expect(actualValue , matchingValue) 
});

group()函数可用于对测试进行分组,每个组的描述将添加到其测试描述的开头。

group("some_Group_Name", () { 
   test("test_name_1", () { 
      expect(actual, equals(exptected)); 
   });  
   test("test_name_2", () { 
      expect(actual, equals(expected)); 
   }); 
}) 

示例1 - 通过测试

以下示例定义了方法 Add(),此方法采用两个整数值,并返回表示 sum 的整数。要测试此 add()方法-

步骤1   -  如下所示导入 test 包。

步骤2   -  使用 test()函数定义测试,在这里, test()函数使用 expect()函数来强制声明。

import 'package:test/test.dart';      
//I导入测试包

int Add(int x,int y)                  
   return x+y; 
}  
void main() { 
   //定义测试
   test("test to check add method",(){  
      //Arrange 
      var expected=30; 
      
      //Act 
      var actual=Add(10,20); 
      
      //Asset 
      expect(actual,expected); 
   }); 
}

它应该产生以下输出-

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

示例2 - 测试失败

下面定义的 subtract()方法有一个逻辑错误,以下 test 进行了验证。

import 'package:test/test.dart'; 
int Add(int x,int y){ 
   return x+y; 
}
int Sub(int x,int y){ 
   return x-y-1; 
}  
void main(){ 
   test('test to check sub',(){ 
      var expected=10;   
      //Arrange 
      
      var actual=Sub(30,20);  
      //Act 
      
      expect(actual,expected);  
      //Assert 
   }); 
   test("test to check add method",(){ 
      var expected=30;   
      //Arrange 
      
      var actual=Add(10,20);  
      //Act 
      
      expect(actual,expected);  
      //Asset 
   }); 
}

输出   -  函数 add()的测试用示例通过,但是对 subtract()的测试失败,如下所示。

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) 

示例3 - 分组测试

您可以将测试用示例分组,以便为​​测试代码增加更多含义,如果您有很多测试用示例,则有助于编写更简洁的代码。

在给定的代码中,我们正在编写 split()函数和 trim 函数的测试用示例,因此,我们在逻辑上将这些测试用示例分组,并将其命名为 String 字符串。

import "package:test/test.dart"; 
void main() { 
   group("String", () { 
      test("test on split() method of string class", () { 
         var string="foo,bar,baz"; 
         expect(string.split(","), equals(["foo", "bar", "baz"])); 
      }); 
      test("test on trim() method of string class", () { 
         var string="  foo "; 
         expect(string.trim(), equals("foo")); 
      }); 
   }); 
} 

输出  -  输出将为每个测试用示例添加组名,如下所示-

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

AI技术内参 -〔洪亮劼〕

硅谷产品实战36讲 -〔曲晓音〕

Java并发编程实战 -〔王宝令〕

Node.js开发实战 -〔杨浩〕

软件设计之美 -〔郑晔〕

如何落地业务建模 -〔徐昊〕

零基础入门Spark -〔吴磊〕

Tony Bai · Go语言第一课 -〔Tony Bai〕

现代React Web开发实战 -〔宋一玮〕

好记忆不如烂笔头。留下您的足迹吧 :)