std.unittest 包
功能介绍
Unittest 库用于编写仓颉项目单元测试代码,提供包括代码编写、运行和调测在内的基本功能,并为有经验的用户提供的一些高级功能。 仓颉单元测试支持 cjc 编译器(单包编译模式)和 cjpm 包管理器( 多包模式)。
用户可通过快速入门写出第一个单元测试程序。同时文档对于一些基础概念及用法做了说明并附有示例代码,另外,对于一些高阶特性例如参数化测试等做了进一步说明。
API 列表
函数
| 函数名 | 功能 |
|---|---|
| csv<T>(String, Rune, Rune, Rune, Option<Rune>, Option<Array<String>>, Array<UInt64>, Array<UInt64>, Bool) | 该函数可从 csv 文件中读取类型 T 的数据值,其中 T 必须可被序列化。该函数的返回值是参数化测试的一种参数源。 |
| json<T>(String) | 该函数可从 JSON 文件中读取类型 T 的数据值,其中 T 必须可被序列化。该函数的返回值是参数化测试的一种参数源。 |
| random<T>() | 该函数生成 T 类型的随机数据,其中 T 必须实现接口 Arbitrary<T> 。该函数的返回值是参数化测试的一种参数源。 |
| tsv<T>(String, Rune, Rune, Option<Rune>, Option<Array<String>>, Array<UInt64>, Array<UInt64>, Bool) | 该函数可从 tsv 文件中读取类型 T 的数据值,其中 T 必须可被序列化。该函数的返回值是参数化测试的一种参数源。 |
接口
| 接口名 | 功能 |
|---|---|
| Arbitrary | 生成 T 类型随机值的接口。 |
| BenchInputProvider | 用于处理性能测试的接口,其中需要在每次性能测试调用之前执行一些代码或者性能测试的输入发生了变化,并且每次都必须从头开始生成。 |
| BenchmarkInputMarker | 当我们不知道 T 时,该接口能够检测 BenchInputProvider<T> 。 |
| DataProvider | DataStrategy 的组件,用于提供测试数据, T 指定提供者提供的数据类型。 |
| DataShrinker | DataStrategy 的组件,用于在测试期间缩减数据,T 指定该收缩器处理的数据类型。 |
| DataStrategy | 为参数化测试提供数据的策略,T 指定该策略操作的数据类型。 |
| Generator | 生成器生成 T 类型的值。 |
| Measurement | 在性能测试过程中可以收集和分析各种数据的接口。性能测试框架使用的特定实例由 @Configure 宏的 measurement 参数指定。 |
| Shrink | 将 T 类型的值缩减到多个“更小”的值。 |
| TestClass | 提供创建 TestSuite 的方法。 |
类
| 类名 | 功能 |
|---|---|
| Benchmark | 该类提供创建和运行单个性能测试用例的方法。 |
| BenchReport | 提供性能用例执行结果报告处理能力。 |
| CartesianProductProcessor | 笛卡尔积处理器。 |
| Configuration | 存储 @Configure 宏生成的 unittest 配置数据的对象。Configuration 是一个类似 HashMap 的类,但它的键不是键和值类型,而是 String 类型,和任何给定类型的值。 |
| ConsoleReporter | 打印单元测试用例结果或者性能测试用例结果到控制台。 |
| CsvReporter | 打印性能测试用例结果数据到 Csv 文件上。 |
| CsvRawReporter | 打印性能测试用例结果数据,该数据只有批次的原始测量值,到 Csv 文件上。 |
| CsvStrategy | DataStrategy 对 CSV 数据格式的序列化实现。 |
| DataStrategyProcessor | 所有 DataStrategy 组件的基类。该类的实例由 @Strategy 宏或成员函数创建。 |
| FlatMapProcessor | 对参数数据进行 FlatMap 的处理器。 |
| FlatMapStrategyProcessor | 对参数数据进行 FlatMap 的处理器。 |
| InputParameter | 入参对象类型。 |
| JsonStrategy | DataStrategy 对 JSON 数据格式的序列化实现。 |
| LazyCyclicNode | 用于在一个循环中一个接一个地推进类型擦除的内部惰性迭代器。 |
| MapProcessor | 对参数数据进行 Map 的处理器。 |
| RandomDataProvider | 使用随机数据生成的 DataProvider 接口的实现。 |
| RandomDataShrinker | 使用随机数据生成的 DataShrinker 接口的实现。 |
| RandomDataStrategy | 使用随机数据生成的 DataStrategy 接口的实现。 |
| Report | 打印测试用例结果报告的基类。 |
| SerializableProvider | 获取序列化数据 DataProvider 接口的实现。 |
| SimpleProcessor | 简单的数据策略处理器。对 DataStrategyProcessor 的一种实现。 |
| TestGroup | 提供构建和运行测试组合方法的类。 |
| TestGroupBuilder | 提供配置测试组合的方法的构造器。 |
| TestReport | 单元测试执行结果报告。 |
| TestSuite | 提供构建和执行测试套方法的类。 |
| TestSuiteBuilder | 提供配置测试套方法的测试套构造器。 |
| UnitTestCase | 提供创建和执行单元测试用例的方法的类。 |
| XmlReporter | 打印单元测试用例结果数据到 Xml 文件上。 |
枚举
| 枚举名 | 功能 |
|---|---|
| ExplicitGcType | 用于指定 @Configure 宏的 explicitGC 配置参数。表示 GC 执行的三种不同方式。 |
| TimeoutInfo | 指定测试超时的信息。目前,可以通过 @Timeout[expr] 宏或者运行时选项 --timeout-each 提供此超时信息。 |
| TimeUnit | 可以在 TimeNow 类构造函数中使用的时间单位。 |
结构体
| 结构体名 | 功能 |
|---|---|
| BatchInputProvider | 输入提供程序,在执行之前在缓冲区中生成整个基准批次的输入。 |
| BatchSizeOneInputProvider | 基准输入提供程序,在每次执行基准之前生成输入。 |
| GenerateEachInputProvider | 基准输入提供程序,在每次执行基准之前生成输入。 |
| ImmutableInputProvider | 最简单的输入提供程序,只需为基准测试的每次调用复制数据。适用于基准测试不会改变输入的情况。它在框架内默认使用。 |
| TimeNow | Measurement 的实现,用于测量执行一个函数所花费的时间。 |