Skip to content

参数化测试

本章介绍 Anvil 的参数化测试功能,用于自动生成多个测试用例。

概述

参数化测试允许你用一个测试函数定义多个测试用例。Anvil 会自动为每组参数生成独立的测试。

c
// 一个函数,8 个测试用例
__attribute__((test_method, params(n = boundary(uint8))))
int test_byte_boundary(int n) {
    return validate_byte(n) == (n >= 0 && n <= 255);
}

核心特性

边界值自动生成

使用 boundary(type) 自动生成边界值:

c
params(n = boundary(uint8))
// 自动生成:0, 1, 127, 128, 254, 255, -1, 256

显式值列表

使用 {...} 指定具体值:

c
params(value = {0, 1, 100, 255, -1})

多参数组合

支持多参数的各种组合策略:

c
params(x = {0, 50, 100}, y = {0, 50, 100})
// 默认笛卡尔积:9 个组合

组合策略

策略说明组合数量
笛卡尔积(默认)所有参数的完全组合n1 × n2 × ...
Pairwise任意两参数至少出现一次显著减少
Zip按索引配对min(n1, n2, ...)

快速示例

c
/*
 * 设计说明:使用边界值测试字节验证
 * 预期结果:0-255有效,其他无效
 */
__attribute__((test_method, params(n = boundary(uint8))))
int test_valid_byte(int n) {
    int result = is_valid_byte(n);
    int expected = (n >= 0 && n <= 255) ? 1 : 0;
    return result == expected;
}

运行结果:

test_valid_byte[n=0] ........ PASSED
test_valid_byte[n=1] ........ PASSED
test_valid_byte[n=127] ...... PASSED
test_valid_byte[n=128] ...... PASSED
test_valid_byte[n=254] ...... PASSED
test_valid_byte[n=255] ...... PASSED
test_valid_byte[n=-1] ....... PASSED
test_valid_byte[n=256] ...... PASSED

章节导航

本页面内容遵循 Luna 软件源代码授权条款 (LSLA) 发布