9 个版本 (4 个稳定版)
2.0.0 | 2024年3月5日 |
---|---|
1.1.0 | 2023年10月12日 |
1.0.1 | 2022年11月9日 |
1.0.0 | 2022年5月2日 |
0.1.1 | 2019年11月14日 |
#7 在 #unit-test
4,432 每月下载量
在 26 个包中使用 (通过 parameterized)
16KB
281 行
测试用例生成的高级概述
示例
使用此宏,我们可以从给定的参数化测试定义(0)生成以下代码(1)
参数化测试定义
// 0
#[parameterized(a = {1, 2}, b = { "wanderlust", "wanderer" })]
fn my_test(a: i32, b: &str) {
assert!(a > 0 && b.starts_with("w"))
}
生成的测试用例
// 1
#[cfg(test)]
mod my_test {
#[test]
fn case_0() {
let a: i32 = 1;
let b: &str = "wanderlust";
assert!(a > 0 && b.starts_with("w"))
}
#[test]
fn case_1() {
let a: i32 = 2;
let b: &str = "wanderer";
assert!(a > 0 && b.starts_with("w"))
}
}
更多示例可以在 expand
包和测试中找到。
备注
-
(1)中的函数名与(0)中的模块名相同
-
请注意,参数不仅限于基本类型;可以是任何表达式(假设:)
-
在参数化测试用例中,属性中指定的输入参数(它们是表达式)应该评估为与函数签名中同名的参数相同类型。
-
应该单独运行来自工作区包的测试,例如(
cargo test --package parameterized-macro --test tests individual_cases -- --exact
)。否则,如果只是使用cargo test
,一些生成的测试用例将在不正确的上下文中运行。
依赖
~1.2–1.7MB
~33K SLoC