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

Download history 761/week @ 2024-03-13 791/week @ 2024-03-20 917/week @ 2024-03-27 926/week @ 2024-04-03 1017/week @ 2024-04-10 881/week @ 2024-04-17 1567/week @ 2024-04-24 1041/week @ 2024-05-01 1662/week @ 2024-05-08 1162/week @ 2024-05-15 779/week @ 2024-05-22 1210/week @ 2024-05-29 1001/week @ 2024-06-05 963/week @ 2024-06-12 853/week @ 2024-06-19 1179/week @ 2024-06-26

4,432 每月下载量
26 个包中使用 (通过 parameterized)

MIT/Apache

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