测试 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。 可选择将字符串写入 desc(大小为 KUNIT_PARAM_DESC_SIZE)以描述参数。

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() 类似,区别在于它在初始化阶段编译套件列表。

此宏还会将 _probe 后缀添加到它创建的数组和套件声明中;以便 modpost 抑制关于引用以这种方式命名的符号的初始化数据的警告。

此外,请勿使用 __initdata 标记套件或测试用例结构,因为它们将在初始化阶段之后与 debugfs 一起使用。

注意

这些初始化测试在启动后无法运行,因此不会为这些测试生成“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_or_suite, fmt, ...)

test_or_suite 标记为跳过

参数

test_or_suite

测试上下文对象。

fmt

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

...

可变参数

描述

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

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

kunit_skip

kunit_skip (test_or_suite, fmt, ...)

test_or_suite 标记为跳过

参数

test_or_suite

测试上下文对象。

fmt

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

...

可变参数

描述

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

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

kunit_info

kunit_info (test, fmt, ...)

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

参数

test

测试上下文对象。

fmt

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

...

可变参数

描述

打印与正在运行的测试套件关联的 info 级别消息。接受可变数量的格式参数,就像 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

一个任意的表达式,求值结果为指定的 size。

right

一个任意的表达式,求值结果为指定的 size。

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

一个任意的表达式,求值结果为指定的 size。

right

一个任意的表达式,求值结果为指定的 size。

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

一个任意的表达式,求值结果为指定的 size。

right

一个任意的表达式,求值结果为指定的 size。

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

一个任意的表达式,求值结果为指定的 size。

right

一个任意的表达式,求值结果为指定的 size。

size

比较的字节数。

描述

设置一个断言,判断 leftright 计算出的值不相等。这在语义上等同于 KUNIT_ASSERT_TRUE(test, memcmp((left), (right), (size))). 有关更多信息,请参阅 KUNIT_ASSERT_TRUE()

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

KUNIT_ASSERT_NULL

KUNIT_ASSERT_NULL (test, ptr)

断言指针 ptr 为空。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个断言,判断 ptr 计算出的值为空。这与 KUNIT_EXPECT_NULL() 相同,但当断言不满足时,会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_NOT_NULL

KUNIT_ASSERT_NOT_NULL (test, ptr)

断言指针 ptr 不为空。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个断言,判断 ptr 计算出的值不为空。这与 KUNIT_EXPECT_NOT_NULL() 相同,但当断言不满足时,会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ASSERT_NOT_ERR_OR_NULL

KUNIT_ASSERT_NOT_ERR_OR_NULL (test, ptr)

断言 ptr 不为空且不为 err。

参数

test

测试上下文对象。

ptr

一个任意指针。

描述

设置一个断言,判断 ptr 计算出的值不为空且不是存储在指针中的 errno。这与 KUNIT_EXPECT_NOT_ERR_OR_NULL() 相同,但当断言不满足时,会导致断言失败(请参阅 KUNIT_ASSERT_TRUE())。

KUNIT_ARRAY_PARAM

KUNIT_ARRAY_PARAM (name, array, get_desc)

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

参数

name

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

数组

测试参数数组。

get_desc

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

描述

定义函数 name_gen_params,它使用 array 生成参数。

KUNIT_ARRAY_PARAM_DESC

KUNIT_ARRAY_PARAM_DESC (name, array, desc_member)

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

参数

name

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

数组

测试参数数组。

desc_member

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

描述

定义函数 name_gen_params,它使用 array 生成参数。