测试 API

此文件记录了所有标准测试 API。

enum kunit_status

测试或测试套件的结果类型

常量

KUNIT_SUCCESS

表示测试套件既没有失败也没有跳过

KUNIT_FAILURE

表示测试已失败。

KUNIT_SKIPPED

表示测试已被跳过。

struct kunit_case

表示一个单独的测试用例。

定义:

struct kunit_case {
    void (*run_case)(struct kunit *test);
    const char *name;
    const void* (*generate_params)(const void *prev, char *desc);
    struct kunit_attributes attr;
};

成员

run_case

表示实际测试用例的函数。

name

测试用例的名称。

generate_params

参数化测试的生成器函数。

attr

与测试关联的属性

描述

测试用例是一个带有签名的函数,void (*)(struct kunit *),它对被测代码进行期望和断言 (参见 KUNIT_EXPECT_TRUE()KUNIT_ASSERT_TRUE())。每个测试用例都与一个 struct kunit_suite 相关联,将在套件的 init 函数之后运行,并紧随套件的 exit 函数。

测试用例应该是静态的,并且只能使用 KUNIT_CASE() 宏创建;此外,每个测试用例数组都应该以一个空的测试用例结束。

void add_test_basic(struct kunit *test)
{
        KUNIT_EXPECT_EQ(test, 1, add(1, 0));
        KUNIT_EXPECT_EQ(test, 2, add(1, 1));
        KUNIT_EXPECT_EQ(test, 0, add(-1, 1));
        KUNIT_EXPECT_EQ(test, INT_MAX, add(0, INT_MAX));
        KUNIT_EXPECT_EQ(test, -1, add(INT_MAX, INT_MIN));
}

static struct kunit_case example_test_cases[] = {
        KUNIT_CASE(add_test_basic),
        {}
};

示例

KUNIT_CASE

KUNIT_CASE (test_name)

用于创建 struct kunit_case 的助手

参数

test_name

对测试用例函数的引用。

描述

接受表示测试用例的函数的符号,并从中创建一个 struct kunit_case 对象。 有关如何使用它的示例,请参阅 struct kunit_case 的文档。

KUNIT_CASE_ATTR

KUNIT_CASE_ATTR (test_name, attributes)

用于创建具有属性的 struct kunit_case 的助手

参数

test_name

对测试用例函数的引用。

attributes

对包含测试属性的 struct kunit_attributes 对象的引用

KUNIT_CASE_SLOW

KUNIT_CASE_SLOW (test_name)

用于创建具有 slow 属性的 struct kunit_case 的助手

参数

test_name

对测试用例函数的引用。

KUNIT_CASE_PARAM

KUNIT_CASE_PARAM (test_name, gen_params)

用于创建参数化的 struct kunit_case 的助手

参数

test_name

对测试用例函数的引用。

gen_params

对参数生成器函数的引用。

描述

生成器函数

const void* gen_params(const void *prev, char *desc)

用于惰性生成一系列任意类型的值,这些值适合 void*。 参数 prev 是先前返回的值,应该用于派生下一个值; 在初始生成器调用时,prev 设置为 NULL。 当没有更多可用值时,生成器必须返回 NULL。 (KUNIT_PARAM_DESC_SIZE 的大小)可以选择将字符串写入 desc 中来描述参数。

KUNIT_CASE_PARAM_ATTR

KUNIT_CASE_PARAM_ATTR (test_name, gen_params, attributes)

用于创建具有属性的参数化的 struct kunit_case 的助手

参数

test_name

对测试用例函数的引用。

gen_params

对参数生成器函数的引用。

attributes

对包含测试属性的 struct kunit_attributes 对象的引用

struct kunit_suite

描述 struct kunit_case 的相关集合

定义:

struct kunit_suite {
    const char name[256];
    int (*suite_init)(struct kunit_suite *suite);
    void (*suite_exit)(struct kunit_suite *suite);
    int (*init)(struct kunit *test);
    void (*exit)(struct kunit *test);
    struct kunit_case *test_cases;
    struct kunit_attributes attr;
};

成员

name

测试的名称。 纯粹的信息。

suite_init

在测试用例之前每个测试套件调用一次。

suite_exit

在所有测试用例之后每个测试套件调用一次。

init

在每个测试用例之前调用。

exit

在每个测试用例之后调用。

test_cases

一个以 null 结尾的测试用例数组。

attr

与测试套件关联的属性

描述

kunit_suite 是相关 struct kunit_case 的集合,因此 init 在每个测试用例之前调用,exit 在每个测试用例之后调用,类似于其他单元测试框架(如 JUnit 或 Googletest)中的测试夹具测试类的概念。

请注意,即使 initsuite_init 失败,exitsuite_exit 也会运行:确保它们可以处理可能导致的任何不一致状态。

每个 struct kunit_case 必须与 kunit_suite 相关联,KUnit 才能运行它。

struct kunit

表示测试的运行实例。

定义:

struct kunit {
    void *priv;
};

成员

priv

供用户存储任意数据。 通常用于传递在 init 函数中创建的数据(参见 struct kunit_suite)。

描述

用于存储有关测试运行的当前上下文的信息。 大部分数据都是私有的,应该只能通过公共函数间接访问; 一个例外是 priv,测试编写者可以使用它来存储任意数据。

kunit_test_suites

kunit_test_suites (__suites...)

用于向 KUnit 注册一个或多个 struct kunit_suite

参数

__suites...

struct kunit_suite 的静态分配列表。

描述

向测试框架注册 suites。 这是通过将 struct kunit_suite * 数组放置在 .kunit_test_suites ELF 部分中来完成的。

当内置时,KUnit 测试都在启动时通过执行器运行,当作为模块构建时,它们在模块加载时运行。

kunit_test_init_section_suites

kunit_test_init_section_suites (__suites...)

用于注册一个或多个包含 init 函数或 init 数据的 struct kunit_suite

参数

__suites...

struct kunit_suite 的静态分配列表。

描述

此函数类似于 kunit_test_suites(),不同之处在于它在 init 阶段编译套件列表。

此宏还会在它进行的数组和套件声明中添加 _probe 后缀; 以便 modpost 抑制有关引用以此方式命名的符号的 init 数据的警告。

另外,不要使用 __initdata 标记套件或测试用例结构,因为它们将在 init 阶段之后与 debugfs 一起使用。

注意

这些 init 测试在启动后无法运行,因此不会为这些测试生成“run”debugfs 文件。

void *kunit_kmalloc_array(struct kunit *test, size_t n, size_t size, gfp_t gfp)

类似于 kmalloc_array(),只是分配是测试托管的

参数

struct kunit *test

测试上下文对象。

size_t n

元素数。

size_t size

所需内存的字节大小。

gfp_t gfp

传递给底层 kmalloc() 的标志。

描述

就像 kmalloc_array(...) 一样,只是分配由测试用例管理,并且在测试用例结束后自动清理。 有关更多信息,请参阅 kunit_add_action()

请注意,无论传入的 gfp 如何,一些内部上下文数据也使用 GFP_KERNEL 分配。

void *kunit_kmalloc(struct kunit *test, size_t size, gfp_t gfp)

类似于 kmalloc(),只是分配是测试托管的

参数

struct kunit *test

测试上下文对象。

size_t size

所需内存的字节大小。

gfp_t gfp

传递给底层 kmalloc() 的标志。

描述

有关更多信息,请参阅 kmalloc()kunit_kmalloc_array()

请注意,无论传入的 gfp 如何,一些内部上下文数据也使用 GFP_KERNEL 分配。

void kunit_kfree(struct kunit *test, const void *ptr)

类似于 kfree,只是用于 KUnit 管理的分配。

参数

struct kunit *test

资源所属的测试用例。

const void *ptr

要释放的内存分配。

void *kunit_kzalloc(struct kunit *test, size_t size, gfp_t gfp)

就像 kunit_kmalloc() 一样,只是将分配置零。

参数

struct kunit *test

测试上下文对象。

size_t size

所需内存的字节大小。

gfp_t gfp

传递给底层 kmalloc() 的标志。

描述

有关更多信息,请参阅 kzalloc()kunit_kmalloc_array()

void *kunit_kcalloc(struct kunit *test, size_t n, size_t size, gfp_t gfp)

就像 kunit_kmalloc_array() 一样,只是将分配置零。

参数

struct kunit *test

测试上下文对象。

size_t n

元素数。

size_t size

所需内存的字节大小。

gfp_t gfp

传递给底层 kmalloc() 的标志。

描述

有关更多信息,请参阅 kcalloc()kunit_kmalloc_array()

void kunit_kfree_const(struct kunit *test, const void *x)

有条件地释放测试托管的内存

参数

struct kunit *test

测试上下文对象。

const void *x

指向内存的指针

描述

仅当 x 不在 .rodata 部分中时才调用 kunit_kfree()。 有关更多信息,请参阅 kunit_kstrdup_const()

char *kunit_kstrdup(struct kunit *test, const char *str, gfp_t gfp)

将字符串复制到测试托管的分配中。

参数

struct kunit *test

测试上下文对象。

const char *str

要复制的以 NULL 结尾的字符串。

gfp_t gfp

传递给底层 kmalloc() 的标志。

描述

有关更多信息,请参阅 kstrdup()kunit_kmalloc_array()

const char *kunit_kstrdup_const(struct kunit *test, const char *str, gfp_t gfp)

有条件地将字符串复制到测试托管的分配中。

参数

struct kunit *test

测试上下文对象。

const char *str

要复制的以 NULL 结尾的字符串。

gfp_t gfp

传递给底层 kmalloc() 的标志。

描述

仅当 str 不在 rodata 部分时才调用 kunit_kstrdup()。 必须使用 kunit_kfree_const() 释放,而不是 kunit_kfree()。 有关更多信息,请参阅 kstrdup_const()kunit_kmalloc_array()

unsigned long kunit_vm_mmap(struct kunit *test, struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flag, unsigned long offset)

分配 KUnit 跟踪的 vm_mmap() 区域

参数

struct kunit *test

测试上下文对象。

struct file *file

要从其映射的 struct file 指针(如果有)

unsigned long addr

所需的地址(如果有)

unsigned long len

要分配多少字节

unsigned long prot

mmap PROT_* 位

unsigned long flag

mmap 标志

unsigned long offset

file 开始映射的偏移量。

描述

有关更多信息,请参阅 vm_mmap()。

kunit_mark_skipped

kunit_mark_skipped (test, fmt, ...)

test 标记为跳过

参数

test

测试上下文对象。

fmt

一种 printk() 风格的格式字符串。

...

可变参数

描述

将测试标记为跳过。 fmt 作为测试状态注释给出输出,通常是测试被跳过的原因。

在调用 kunit_mark_skipped() 后,测试执行继续。

kunit_skip

kunit_skip (test, fmt, ...)

test 标记为跳过

参数

test

测试上下文对象。

fmt

一种 printk() 风格的格式字符串。

...

可变参数

描述

跳过测试。 fmt 作为测试状态注释给出输出,通常是测试被跳过的原因。

在调用 kunit_skip() 后,测试执行停止。

kunit_info

kunit_info (test, fmt, ...)

打印与 test 关联的 INFO 级别消息。

参数

test

测试上下文对象。

fmt

一种 printk() 风格的格式字符串。

...

可变参数

描述

打印与正在运行的测试套件关联的信息级别消息。 接受可变数量的格式参数,就像 printk() 一样。

kunit_warn

kunit_warn (test, fmt, ...)

打印与 test 关联的 WARN 级别消息。

参数

test

测试上下文对象。

fmt

一种 printk() 风格的格式字符串。

...

可变参数

描述

打印警告级别消息。

kunit_err

kunit_err (test, fmt, ...)

打印与 test 关联的 ERROR 级别消息。

参数

test

测试上下文对象。

fmt

一种 printk() 风格的格式字符串。

...

可变参数

描述

打印错误级别消息。

KUNIT_SUCCEED

KUNIT_SUCCEED (test)

一个空操作期望。 仅为了代码清晰而存在。

参数

test

测试上下文对象。

描述

KUNIT_FAIL() 相反,它是一个不可能失败的期望。 换句话说,它什么也不做,仅为了代码清晰而存在。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_FAIL

KUNIT_FAIL (test, fmt, ...)

在评估时始终导致测试失败。

参数

test

测试上下文对象。

fmt

在断言时要打印的信息消息。

...

字符串格式参数。

描述

KUNIT_SUCCEED() 相反,它是一个始终失败的期望。 换句话说,它总是导致期望失败,因此在评估时总是导致测试用例失败。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_TRUE

KUNIT_EXPECT_TRUE (test, condition)

当表达式不为 true 时,导致测试失败。

参数

test

测试上下文对象。

condition

一个任意的布尔表达式。 当此表达式的计算结果不为 true 时,测试失败。

描述

此期望以及 KUNIT_EXPECT_* 形式的期望会在未满足指定条件时导致测试用例失败; 但是,它不会阻止测试用例继续运行; 这也称为期望失败

KUNIT_EXPECT_FALSE

KUNIT_EXPECT_FALSE (test, condition)

当表达式不为 false 时,会导致测试失败。

参数

test

测试上下文对象。

condition

一个任意的布尔表达式。 当此表达式的计算结果不为 false 时,测试失败。

描述

设置一个期望,即 condition 的计算结果为 false。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_EQ

KUNIT_EXPECT_EQ (test, left, right)

设置一个期望,即 leftright 相等。

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个期望,即 leftright 的计算结果的值相等。 这在语义上等效于 KUNIT_EXPECT_TRUE(test, (left) == (right))。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_PTR_EQ

KUNIT_EXPECT_PTR_EQ (test, left, right)

期望指针 leftright 相等。

参数

test

测试上下文对象。

left

一个计算结果为指针的任意表达式。

right

一个计算结果为指针的任意表达式。

描述

设置一个期望,即 leftright 的计算结果的值相等。 这在语义上等效于 KUNIT_EXPECT_TRUE(test, (left) == (right))。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_NE

KUNIT_EXPECT_NE (test, left, right)

一个期望,即 leftright 不相等。

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个期望,即 leftright 的计算结果的值不相等。 这在语义上等效于 KUNIT_EXPECT_TRUE(test, (left) != (right))。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_PTR_NE

KUNIT_EXPECT_PTR_NE (test, left, right)

期望指针 leftright 不相等。

参数

test

测试上下文对象。

left

一个计算结果为指针的任意表达式。

right

一个计算结果为指针的任意表达式。

描述

设置一个期望,即 leftright 的计算结果的值不相等。 这在语义上等效于 KUNIT_EXPECT_TRUE(test, (left) != (right))。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_LT

KUNIT_EXPECT_LT (test, left, right)

一个期望,即 left 小于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个期望,即 left 计算出的值小于 right 计算出的值。 这在语义上等效于 KUNIT_EXPECT_TRUE(test, (left) < (right))。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_LE

KUNIT_EXPECT_LE (test, left, right)

期望 left 小于或等于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个期望,即 left 计算出的值小于或等于 right 计算出的值。 在语义上,这等效于 KUNIT_EXPECT_TRUE(test, (left) <= (right))。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_GT

KUNIT_EXPECT_GT (test, left, right)

一个期望,即 left 大于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个期望,即 left 计算出的值大于 right 计算出的值。 这在语义上等效于 KUNIT_EXPECT_TRUE(test, (left) > (right))。 有关更多信息,请参阅 KUNIT_EXPECT_TRUE()

KUNIT_EXPECT_GE

KUNIT_EXPECT_GE (test, left, right)

期望 left 大于或等于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个期望,即 left 的计算结果大于等于 right 的计算结果。这在语义上等同于 KUNIT_EXPECT_TRUE(test, (left) >= (right))。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

KUNIT_EXPECT_STREQ

KUNIT_EXPECT_STREQ (test, left, right)

期望字符串 leftright 相等。

参数

test

测试上下文对象。

left

一个计算结果为以 null 结尾的字符串的任意表达式。

right

一个计算结果为以 null 结尾的字符串的任意表达式。

描述

设置一个期望,即 leftright 的计算结果相等。这在语义上等同于 KUNIT_EXPECT_TRUE(test, !strcmp((left), (right)))。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

KUNIT_EXPECT_STRNEQ

KUNIT_EXPECT_STRNEQ (test, left, right)

期望字符串 leftright 不相等。

参数

test

测试上下文对象。

left

一个计算结果为以 null 结尾的字符串的任意表达式。

right

一个计算结果为以 null 结尾的字符串的任意表达式。

描述

设置一个期望,即 leftright 的计算结果不相等。这在语义上等同于 KUNIT_EXPECT_TRUE(test, strcmp((left), (right)))。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

KUNIT_EXPECT_MEMEQ

KUNIT_EXPECT_MEMEQ (test, left, right, size)

期望 leftright 的前 size 个字节相等。

参数

test

测试上下文对象。

left

计算结果为指定大小的任意表达式。

right

计算结果为指定大小的任意表达式。

size

比较的字节数。

描述

设置一个期望,即 leftright 的计算结果相等。这在语义上等同于 KUNIT_EXPECT_TRUE(test, !memcmp((left), (right), (size)))。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

虽然此期望适用于任何内存块,但不建议用于比较更结构化的数据,例如结构体。 建议将此期望用于比较例如数据数组。

KUNIT_EXPECT_MEMNEQ

KUNIT_EXPECT_MEMNEQ (test, left, right, size)

期望 leftright 的前 size 个字节不相等。

参数

test

测试上下文对象。

left

计算结果为指定大小的任意表达式。

right

计算结果为指定大小的任意表达式。

size

比较的字节数。

描述

设置一个期望,即 leftright 的计算结果不相等。这在语义上等同于 KUNIT_EXPECT_TRUE(test, memcmp((left), (right), (size)))。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

虽然此期望适用于任何内存块,但不建议用于比较更结构化的数据,例如结构体。 建议将此期望用于比较例如数据数组。

KUNIT_EXPECT_NULL

KUNIT_EXPECT_NULL (test, ptr)

期望 ptr 为 null。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个期望,即 ptr 的计算结果为 null。这在语义上等同于 KUNIT_EXPECT_PTR_EQ(test, ptr, NULL)。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

KUNIT_EXPECT_NOT_NULL

KUNIT_EXPECT_NOT_NULL (test, ptr)

期望 ptr 不为 null。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个期望,即 ptr 的计算结果不为 null。这在语义上等同于 KUNIT_EXPECT_PTR_NE(test, ptr, NULL)。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

KUNIT_EXPECT_NOT_ERR_OR_NULL

KUNIT_EXPECT_NOT_ERR_OR_NULL (test, ptr)

期望 ptr 不为 null 且不为 err。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个期望,即 ptr 的计算结果不为 null 且不是存储在指针中的 errno。这在语义上等同于 KUNIT_EXPECT_TRUE(test, !IS_ERR_OR_NULL(ptr))。 参阅 KUNIT_EXPECT_TRUE() 获取更多信息。

KUNIT_FAIL_AND_ABORT

KUNIT_FAIL_AND_ABORT (test, fmt, ...)

始终会导致测试失败并在计算时中止。

参数

test

测试上下文对象。

fmt

在断言时要打印的信息消息。

...

字符串格式参数。

描述

KUNIT_SUCCEED() 相反,它是一个始终失败的断言。 换句话说,它始终会导致断言失败,因此始终会导致测试用例在计算时失败并中止。 参阅 KUNIT_ASSERT_TRUE() 获取更多信息。

KUNIT_ASSERT_TRUE

KUNIT_ASSERT_TRUE (test, condition)

设置一个断言,即 condition 为 true。

参数

test

测试上下文对象。

condition

一个任意布尔表达式。 当此表达式的计算结果不为 true 时,测试将失败并中止。

描述

此类断言和 KUNIT_ASSERT_* 形式的断言将在不满足指定条件时导致测试用例失败并立即中止。 与期望失败不同,它将阻止测试用例继续运行; 这也称为断言失败

KUNIT_ASSERT_FALSE

KUNIT_ASSERT_FALSE (test, condition)

设置一个断言,即 condition 为 false。

参数

test

测试上下文对象。

condition

一个任意布尔表达式。

描述

设置一个断言,即 condition 的计算结果为 false。 这与 KUNIT_EXPECT_FALSE() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_EQ

KUNIT_ASSERT_EQ (test, left, right)

设置一个断言,即 leftright 相等。

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个断言,即 leftright 的计算结果相等。 这与 KUNIT_EXPECT_EQ() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_PTR_EQ

KUNIT_ASSERT_PTR_EQ (test, left, right)

断言指针 leftright 相等。

参数

test

测试上下文对象。

left

一个计算结果为指针的任意表达式。

right

一个计算结果为指针的任意表达式。

描述

设置一个断言,即 leftright 的计算结果相等。 这与 KUNIT_EXPECT_EQ() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_NE

KUNIT_ASSERT_NE (test, left, right)

一个断言,即 leftright 不相等。

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个断言,即 leftright 的计算结果不相等。 这与 KUNIT_EXPECT_NE() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_PTR_NE

KUNIT_ASSERT_PTR_NE (test, left, right)

断言指针 leftright 不相等。 KUNIT_ASSERT_PTR_EQ() - 断言指针 leftright 相等。

参数

test

测试上下文对象。

left

一个计算结果为指针的任意表达式。

right

一个计算结果为指针的任意表达式。

描述

设置一个断言,即 leftright 的计算结果不相等。 这与 KUNIT_EXPECT_NE() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_LT

KUNIT_ASSERT_LT (test, left, right)

一个断言,即 left 小于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个断言,即 left 的计算结果小于 right 的计算结果。 这与 KUNIT_EXPECT_LT() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_LE

KUNIT_ASSERT_LE (test, left, right)

一个断言,即 left 小于或等于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个断言,即 left 的计算结果小于或等于 right 的计算结果。 这与 KUNIT_EXPECT_LE() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_GT

KUNIT_ASSERT_GT (test, left, right)

一个断言,即 left 大于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个断言,即 left 的计算结果大于 right 的计算结果。 这与 KUNIT_EXPECT_GT() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_GE

KUNIT_ASSERT_GE (test, left, right)

断言 left 大于或等于 right

参数

test

测试上下文对象。

left

一个计算结果为原始 C 类型的任意表达式。

right

一个计算结果为原始 C 类型的任意表达式。

描述

设置一个断言,即 left 的计算结果大于 right 的计算结果。 这与 KUNIT_EXPECT_GE() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_STREQ

KUNIT_ASSERT_STREQ (test, left, right)

一个断言,即字符串 leftright 相等。

参数

test

测试上下文对象。

left

一个计算结果为以 null 结尾的字符串的任意表达式。

right

一个计算结果为以 null 结尾的字符串的任意表达式。

描述

设置一个断言,即 leftright 的计算结果相等。 这与 KUNIT_EXPECT_STREQ() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_STRNEQ

KUNIT_ASSERT_STRNEQ (test, left, right)

一个断言,即字符串 leftright 不相等。

参数

test

测试上下文对象。

left

一个计算结果为以 null 结尾的字符串的任意表达式。

right

一个计算结果为以 null 结尾的字符串的任意表达式。

描述

设置一个断言,即 leftright 的计算结果不相等。 这在语义上等同于 KUNIT_ASSERT_TRUE(test, strcmp((left), (right)))。 参阅 KUNIT_ASSERT_TRUE() 获取更多信息。

KUNIT_ASSERT_MEMEQ

KUNIT_ASSERT_MEMEQ (test, left, right, size)

断言 leftright 的前 size 个字节相等。

参数

test

测试上下文对象。

left

计算结果为指定大小的任意表达式。

right

计算结果为指定大小的任意表达式。

size

比较的字节数。

描述

设置一个断言,即 leftright 的计算结果相等。 这在语义上等同于 KUNIT_ASSERT_TRUE(test, !memcmp((left), (right), (size)))。 参阅 KUNIT_ASSERT_TRUE() 获取更多信息。

虽然此断言适用于任何内存块,但不建议用于比较更结构化的数据,例如结构体。 建议将此断言用于比较例如数据数组。

KUNIT_ASSERT_MEMNEQ

KUNIT_ASSERT_MEMNEQ (test, left, right, size)

断言 leftright 的前 size 个字节不相等。

参数

test

测试上下文对象。

left

计算结果为指定大小的任意表达式。

right

计算结果为指定大小的任意表达式。

size

比较的字节数。

描述

设置一个断言,即 leftright 的计算结果不相等。 这在语义上等同于 KUNIT_ASSERT_TRUE(test, memcmp((left), (right), (size)))。 参阅 KUNIT_ASSERT_TRUE() 获取更多信息。

虽然此断言适用于任何内存块,但不建议用于比较更结构化的数据,例如结构体。 建议将此断言用于比较例如数据数组。

KUNIT_ASSERT_NULL

KUNIT_ASSERT_NULL (test, ptr)

断言指针 ptr 为 null。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个断言,即 ptr 的计算结果为 null。 这与 KUNIT_EXPECT_NULL() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_NOT_NULL

KUNIT_ASSERT_NOT_NULL (test, ptr)

断言指针 ptr 不为 null。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个断言,即 ptr 的计算结果不为 null。 这与 KUNIT_EXPECT_NOT_NULL() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_NOT_ERR_OR_NULL

KUNIT_ASSERT_NOT_ERR_OR_NULL (test, ptr)

断言 ptr 不为 null 且不为 err。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个断言,即 ptr 的计算结果不为 null 且不是存储在指针中的 errno。 这与 KUNIT_EXPECT_NOT_ERR_OR_NULL() 相同,只是当不满足断言时,它会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ARRAY_PARAM

KUNIT_ARRAY_PARAM (name, array, get_desc)

从数组定义测试参数生成器。

参数

name

测试参数生成器函数的前缀。

array

测试参数数组。

get_desc

将参数转换为描述的函数; 如果使用默认值,则为 NULL

描述

定义使用 array 生成参数的函数 name_gen_params

KUNIT_ARRAY_PARAM_DESC

KUNIT_ARRAY_PARAM_DESC (name, array, desc_member)

从数组定义测试参数生成器。

参数

name

测试参数生成器函数的前缀。

array

测试参数数组。

desc_member

要用作描述的数组元素的结构体成员

描述

定义使用 array 生成参数的函数 name_gen_params