Flutter插件zam_test的使用_zam_test是 test 包的一个类型化的版本
Flutter插件zam_test的使用_zam_test是 test 包的一个类型化的版本
zam_test
是 test
包的一个类型化的版本。
包含的功能
包含以下核心组件:
详细查看所有组件 在这里。
如何使用Flutter插件zam_test
概要
Test
是主类。它有两个构造方法,分别是Test.single
和Test.multi
。如果测试简单且只有一个用例,则使用Test.single
。TestCase
是包装在Test.multi
中的。避免直接使用TestCase
。TestGroup
用于一起运行多个Test
。
Test
Test
可以看作是原始 test
包中的 test()
函数的类型化版本。大多数情况下,Test
将基于不同的输入有多个用例。例如,登录测试可能基于不同的输入(如错误的用户名、错误的密码、正确的用户名和密码等)有不同的测试用例。Test
也可以有一个单一的测试用例。因此,我们分别使用 MultiCasedTest
和 SingleCasedTest
来处理这些情况。
你可以通过以下步骤创建一个新的测试:
- 创建一个扩展
Test
的类。 - 提供一个
name
。 - 覆写
run
函数,该函数在每个TestCase
运行时被调用。 - 提供一个
cases
列表。 - 在需要时覆写
initialize
和dispose
。 - 你还可以自定义
nameSuffix
和description
。
class HeightTest extends Test<double, String> {
[@override](/user/override)
final name = 'Height';
[@override](/user/override)
run(input) {
return Height(input).toStringInMetre();
}
[@override](/user/override)
final cases = [
NegativeTestCase(
when: 'Negative height value',
input: -23,
exception: HeightNotValidException,
),
NegativeTestCase(
when: 'Zero height value',
input: 0,
exception: HeightNotValidException,
),
ValueTestCase(
when: 'Positive Border height value',
then: 'outputs value in m',
input: 1,
output: '0.01 m',
),
];
}
void main() {
HeightTest().execute();
}
TestGroup
TestGroup
用于一起运行多个 Test
。它是一个更实用的类。你可以不使用这个类来运行测试。
void main() {
TestGroup('BMI', [
HeightTest(),
// WeightTest(),
// HeightTest(),
// BmiCategoryTest(),
// ...
// ...
// ... (你可以在这里添加更多的测试组)
]).execute();
}
TestCase
它接受两个描述性文本 when
和 then
,一个 input
,一个 matcher
,以及一个可选的回调 action
。
注意:即使你想运行一个单独的测试用例,也应考虑将其放在 Test
类中,这可以通过使用 Test.single
构造方法实现。
执行 TestCase
的简单方式如下:
void main() {
ValueTestCase(
when: 'Positive Border height value',
then: 'outputs value in m',
input: 1.0,
output: '0.01 m',
action: (double input) => Height(input).toStringInMetre(),
).execute();
}
目前我们提供了以下从 TestCase
衍生的测试用例类型。我们希望未来这个列表会增长以处理各种场景。在那之前,你可以使用 TestCase
,因为它接受一个自定义匹配器。
- ValueTestCase - 用于匹配直接值。
- NegativeTestCase - 用于匹配异常。
- BooleanTestCase - 用于匹配布尔值。
更多了解,请移步到 示例部分 或查看这些在 GitHub 上的 例子。
自定义
你可以覆盖以下内容:
TestCase
->descriptionDelimiter
- 默认为' -> '
。TestCase
->description
- 它是由when
和then
文本结合而成的,中间用descriptionDelimiter
分隔。Test
->nameSuffix
- 默认为':'
。Test
->description
- 它是由name
和nameSuffix
结合而成的。TestGroup
->nameSuffix
- 默认为' -'
。TestGroup
->description
- 它是由name
和nameSuffix
结合而成的。
状态
贡献者
许可证
示例代码
main.dart
import 'package:zam_test/utilities.dart';
import 'package:zam_test/zam_test.dart';
///
/// [TestGroup] 用于一起运行多个 [Test]。
///
void main() {
TestGroup('BMI', [
HeightTest(),
HeightCanCreateTest(),
// ...
// ...
// ... (你可以在这里添加更多的测试)
]).execute();
// 另外一种写法如下。
// HeightTest().execute();
// 但是当有很多测试时,[TestGroup] 会很有帮助。
}
///
/// 创建一个扩展 [Test] 的类。
/// 提供一个 [name]。(如果没有提供,默认为类名。在这个例子中,它是 'HeightTest')
/// 你可以选择性地覆写 [nameSuffix] 和 [description]。
/// 当需要时覆写 [initialize] 和 [dispose]。
/// 覆写 [run] 函数,该函数在每个 [TestCase] 运行时被调用。
/// 提供一个 [testCases] 列表。
///
class HeightTest extends Test<double, String> {
[@override](/user/override)
final name = 'Height';
/// 在第一个 [TestCase] 运行前运行一次。
/// [sleep] 是这个包中的一个工具函数。
[@override](/user/override)
initialize() async {
await sleep(seconds: 1);
}
/// 该函数在每个 [TestCase] 运行时被调用。
[@override](/user/override)
run(input) {
return Height(input).toStringInMetre();
}
/// 在最后一个 [TestCase] 运行后运行一次。
/// [shutdown] 是这个包中的一个工具函数。
[@override](/user/override)
dispose() async {
await shutdown(seconds: 1);
}
/// 提供所有的 [TestCase] 列表。
///
/// 这里有一些不同类型的测试用例。
/// [TestCase] - 基础类,期望一个输入和一个匹配器。
/// [ValueTestCase] - 期望一个输入和一个输出。
/// [NegativeTestCase] - 期望一个输入和一个异常类型。
/// [BooleanTestCase] - 期望一个输入和输出根据构造函数设置。
[@override](/user/override)
final cases = [
NegativeTestCase(
when: 'Negative height value',
input: -23,
exception: HeightNotValidException,
),
NegativeTestCase(
when: 'Negative Border height value',
input: -1,
exception: HeightNotValidException,
),
NegativeTestCase(
when: 'Zero height value',
input: 0,
exception: HeightNotValidException,
),
ValueTestCase(
when: 'Positive Border height value',
then: 'outputs value in m',
input: 1,
output: '0.01 m',
),
ValueTestCase(
when: 'Positive height value',
then: 'outputs value in m',
input: 45,
output: '0.45 m',
),
ValueTestCase(
when: 'Positive Extreme height value',
then: 'outputs value in m',
input: 834,
output: '8.34 m',
),
];
}
class HeightCanCreateTest extends Test<double, bool> {
[@override](/user/override)
bool run(double input) {
return Height.canCreate(input);
}
[@override](/user/override)
final cases = [
BooleanTestCase.truthy(
when: 'Positive height value',
input: 45,
),
BooleanTestCase.falsy(
when: 'Negative height value',
input: -22,
),
];
}
class Height {
final double value;
double get valueInMetre => value / 100;
static bool canCreate(double value) => value > 0;
Height(double value)
: value = value > 0 ? value : throw HeightNotValidException(value);
[@override](/user/override)
String toString() {
return '${value.round()} cm';
}
String toStringInMetre() {
return '${valueInMetre.toStringAsFixed(2)} m';
}
}
class HeightNotValidException implements Exception {
final double value;
const HeightNotValidException(this.value);
[@override](/user/override)
String toString() {
return '$runtimeType: $value is an invalid height value. Height should be positive.';
}
}
更多关于Flutter插件zam_test的使用_zam_test是 test 包的一个类型化的版本的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件zam_test的使用_zam_test是 test 包的一个类型化的版本的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter开发中,zam_test
并不是一个常见的或官方维护的插件,因此其功能和用法可能并不为大多数开发者所熟知。如果你在某个项目或文档中遇到了 zam_test
插件,以下是一些探索和使用它的步骤和建议:
1. 查找官方文档或源代码
首先,尝试找到 zam_test
插件的官方文档或源代码。通常,Flutter插件会发布在 pub.dev 上,你可以通过搜索 zam_test
来查看是否有相关的插件信息。
flutter pub search zam_test
如果找到该插件,查看其文档、README 文件以及示例代码,了解其功能和用法。
2. 查看插件的源代码
如果 zam_test
插件没有发布在 pub.dev 上,你可以尝试查找其源代码。通常,插件的源代码可能托管在 GitHub 或 GitLab 等代码托管平台上。你可以通过以下方式查找:
- 在 GitHub 上搜索
zam_test
插件。 - 查看项目中
pubspec.yaml
文件的dependencies
部分,可能包含插件的源代码链接。
3. 分析 pubspec.yaml
文件
在项目的 pubspec.yaml
文件中,查找 zam_test
插件的依赖项,看看是否有版本号或源代码链接。例如:
dependencies:
zam_test: ^1.0.0
如果有版本号,可以通过 flutter pub get
命令获取插件。
4. 阅读插件的 README 和示例代码
如果找到了插件的源代码,通常会有一个 README.md
文件,里面会详细描述插件的功能、用法和示例代码。阅读这些内容可以帮助你快速上手。
5. 尝试在项目中使用
根据文档或示例代码,尝试在项目中引入并使用 zam_test
插件。例如:
import 'package:zam_test/zam_test.dart';
void main() {
// 使用 zam_test 插件的功能
}