std.unittest

功能介绍

unittest 包用于编写仓颉项目单元测试代码,提供包括代码编写、运行和调测在内的基本功能,并为有经验的用户提供的一些高级功能。

仓颉单元测试支持 cjc 编译器(单包编译模式)和 cjpm 包管理器( 多包模式)。

用户可通过快速入门写出第一个单元测试程序。同时文档对于一些基础概念及用法做了说明并附有示例代码,另外,对于一些高阶特性例如参数化测试等做了进一步说明。

如下 API 从其他包中重导出,因此用户亦可以只导入 unittest 即可使用。

从 unittest.common 包中重导出

接口

接口名功能
DataProviderDataStrategy 的组件,用于提供测试数据, T 指定提供者提供的数据类型。
DataShrinkerDataStrategy 的组件,用于在测试期间缩减数据,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, Option<AssertionCtx>)捕获的异常不符合预期,记录信息,抛出异常。
assertEqual<T>(String, String, T, T, Option<AssertionCtx>)比较 expectedactual 值是否相等。若不等,直接抛出异常。
defaultConfiguration()生成默认的配置信息。
entryMain(TestPackage)提供给 cjc --test 使用,框架执行测试用例的入口函数。
expectCaughtUnexpectedE(String,String,String, Option<AssertionCtx>)捕获的异常不符合预期,记录信息,不抛出异常。
expectEqual(String, String, T, T, Option<AssertionCtx>)比较 expectedactual 值是否相等。记录比较结果,不抛出异常。
fail(String)使该用例失败,直接抛出异常。
failExpect(String)使该用例失败,记录信息,不抛出异常。
invokeCustomAssert<T>(Array<String>, String, (AssertionCtx) -> T, Option<AssertionCtx>)运行在 @Test, @TestCase, 或 @CustomAssertion 宏中使用的 @Assert[caller](passerArgs) 指定的用户定义断言函数。
invokeCustomExpect<T>(Array<String>, String, (AssertionCtx) -> Any, Option<AssertionCtx>)运行在 @Test, @TestCase, 或 @CustomAssertion 宏中使用的 @Expect[caller](passerArgs) 指定的用户定义断言函数。

类型别名

类型别名功能
MeasurementUnitTable用于为性能测试指定 Measurement 实例。

接口

接口名功能
BenchInputProvider用于处理性能测试的接口,其中需要在每次性能测试调用之前执行一些代码或者性能测试的输入发生了变化,并且每次都必须从头开始生成。
BenchmarkConfig空接口,区分部分 Configuration 函数为性能相关配置。
BenchmarkInputMarker当我们不知道 T 时,该接口能够检测 BenchInputProvider<T>
Generator生成器生成 T 类型的值。
Measurement在性能测试过程中可以收集和分析各种数据的接口。性能测试期间使用的 Measurement 的具体实例在 @Measure 宏中指定(例如在类声明中)。
TestClass提供创建 TestSuite 的方法。

类名功能
AssertionCtx存储用户定义的断言的状态。提供用于编写​​用户定义断言的方法。
Benchmark该类提供创建和运行单个性能测试用例的方法。
BenchReport提供性能用例执行结果报告处理能力。
CartesianProductProcessor<T0,T1>笛卡尔积处理器。
ConsoleReporter打印单元测试用例结果或者性能测试用例结果到控制台。
CsvReporter打印性能测试用例结果数据到 Csv 文件上。
CsvRawReporter打印性能测试用例结果数据,该数据只有批次的原始测量值,到 Csv 文件上。
CsvStrategy<T>DataStrategy 对 CSV 数据格式的序列化实现。
DataStrategyProcessor<T>所有 DataStrategy 组件的基类。该类的实例由 @Strategy 宏或成员函数创建。
FlatMapProcessor<T,R>对参数数据进行 FlatMap 的处理器。
FlatMapStrategyProcessor<T,R>对参数数据进行 FlatMap 的处理器。
InputParameter入参对象类型。
JsonStrategy<T>DataStrategy 对 JSON 数据格式的序列化实现。
LazyCyclicNode用于在一个循环中一个接一个地推进类型擦除的内部惰性迭代器。
MapProcessor<T,R>对参数数据进行 Map 的处理器。
PowerAssertDiagramBuilderPowerAssert 输出结果构造器。
RandomDataProvider<T>使用随机数据生成的 DataProvider 接口的实现。
RandomDataShrinker<T>使用随机数据生成的 DataShrinker 接口的实现。
RandomDataStrategy<T>使用随机数据生成的 DataStrategy 接口的实现。
RawStatsReporter未处理的性能测试数据报告器。仅给框架内部使用。
Report打印测试用例结果报告的基类。
SerializableProvider<T>获取序列化数据 DataProvider 接口的实现。
SimpleProcessor<T>简单的数据策略处理器。对 DataStrategyProcessor 的一种实现。
TestGroup提供构建和运行测试组合方法的类。
TestGroupBuilder提供配置测试组合的方法的构造器。
TestPackage用例包对象。
TestReport单元测试执行结果报告。
TestSuite提供构建和执行测试套方法的类。
TestSuiteBuilder提供配置测试套方法的测试套构造器。
UnitTestCase提供创建和执行单元测试用例的方法的类。
XmlReporter打印单元测试用例结果数据到 Xml 文件上。

枚举

枚举名功能
ExplicitGcType用于指定 @Configure 宏的 explicitGC 配置参数。表示 GC 执行的三种不同方式。
TimeUnit可以在 TimeNow 类构造函数中使用的时间单位。
PerfCounter枚举 Perf 构造器支持的 CPU 计数器。

结构体

结构体名功能
BatchInputProvider<T>输入提供程序,在执行之前在缓冲区中生成整个基准批次的输入。
BatchSizeOneInputProvider<T>基准输入提供程序,在每次执行基准之前生成输入。
CpuCycles使用本机 rdtscp 指令测量 CPU 周期数。仅适用于 x86 平台。
GenerateEachInputProvider<T>基准输入提供程序,在每次执行基准之前生成输入。
ImmutableInputProvider<T>最简单的输入提供程序,只需为基准测试的每次调用复制数据。适用于基准测试不会改变输入的情况。它在框架内默认使用。
Perf使用linux 系统调用 perf_event_open 测量各种硬件和软件 CPU 计数器。仅在 Linux 上可用。
TimeNowMeasurement 的实现,用于测量执行一个函数所花费的时间。

异常类

异常名功能
AssertException@Expect / @Assert 检查失败时所抛出的异常。
AssertIntermediateException@PowerAssert 检查失败时所抛出的异常。
UnittestCliOptionsFormatException控制台选项格式错误抛出的异常。
UnittestException框架通用异常。