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