- Dart 编程教程
- Dart 编程 - 主页
- Dart 编程 - 概述
- Dart 编程 - 环境
- Dart 编程 - 语法
- Dart 编程 - 数据类型
- Dart 编程 - 变量
- Dart 编程 - 运算符
- Dart 编程 - 循环
- Dart 编程 - 决策
- Dart 编程 - 数字
- Dart 编程 - 字符串
- Dart 编程 - 布尔值
- Dart 编程 - 列表
- Dart 编程 - 列表
- Dart 编程 - 地图
- Dart 编程 - 符号
- Dart 编程 - 符文
- Dart 编程 - 枚举
- Dart 编程 - 函数
- Dart 编程 - 接口
- Dart 编程 - 类
- Dart 编程 - 对象
- Dart 编程 - 集合
- Dart 编程 - 泛型
- Dart 编程 - 包
- Dart 编程 - 异常
- Dart 编程 - 调试
- Dart 编程 - Typedef
- Dart 编程 - 库
- Dart 编程 - 异步
- Dart 编程 - 并发
- Dart 编程 - 单元测试
- Dart 编程 - HTML DOM
- Dart 编程有用的资源
- Dart 编程 - 快速指南
- Dart 编程 - 资源
- Dart 编程 - 讨论
Dart 编程 - 单元测试
单元测试涉及测试应用程序的每个单独单元。它可以帮助开发人员测试小功能,而无需运行整个复杂的应用程序。
名为“test”的Dart外部库提供了编写和运行单元测试的标准方法。
Dart 单元测试涉及以下步骤 -
第 1 步:安装“测试”包
要在当前项目中安装第三方包,您将需要pubspec.yaml文件。要安装测试包,首先在pubspec.yaml文件中添加以下条目-
dependencies: test:
输入后,右键单击pubspec.yaml文件并获取依赖项。它将安装“测试”包。下面给出的是WebStorm编辑器中相同内容的屏幕截图。
也可以从命令行安装软件包。在终端中输入以下内容 -
pub get
第2步:导入“测试”包
import "package:test/test.dart";
步骤 3 编写测试
使用顶级函数test()指定测试,而使用Expect()函数进行测试断言。要使用这些方法,应将它们安装为pub依赖项。
句法
test("Description 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 - 导入测试包,如下所示。
步骤 2 - 使用test()函数定义测试。这里,test()函数使用expect()函数来强制执行断言。
import 'package:test/test.dart'; // Import the test package int Add(int x,int y) // Function to be tested { return x+y; } void main() { // Define the test 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 ()方法有一个逻辑错误。下面的测试也验证了这一点。
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()的测试用例通过,但minus()的测试失败,如下所示。
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)
对测试用例进行分组
您可以对测试用例进行分组,以便为您的测试代码添加更多含义。如果您有很多测试用例,这有助于编写更清晰的代码。
在给定的代码中,我们正在为split()函数和修剪函数编写一个测试用例。因此,我们对这些测试用例进行逻辑分组并将其称为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