#mocking #unit-testing

table-test

提升Rust的表格测试功能

4个版本

使用旧的Rust 2015

0.2.1 2018年4月9日
0.2.0 2018年3月6日
0.1.1 2018年3月1日
0.1.0 2018年3月1日

测试分类中排名#691

Download history 75/week @ 2024-03-24 63/week @ 2024-03-31 30/week @ 2024-04-07 22/week @ 2024-04-14 28/week @ 2024-04-21 14/week @ 2024-04-28 27/week @ 2024-05-05 22/week @ 2024-05-12 23/week @ 2024-05-19 56/week @ 2024-05-26 42/week @ 2024-06-02 117/week @ 2024-06-09 49/week @ 2024-06-16 26/week @ 2024-06-23 20/week @ 2024-06-30 93/week @ 2024-07-07

每月下载量193
8个crate中(5个直接使用)使用

MIT许可证

230KB
413

表格测试

Build Status codecov.io Current Crates.io Version

这个库旨在使Rust中的表格测试更加可靠。使用基本的Rust进行表格测试的主要问题是assert_eq!调用panic!。这意味着当断言失败时,测试函数的其余部分将不会执行。在表格测试的情况下,可能会导致多个用例未测试,从而使测试输出不可靠。

用法

将此crate指定为[dev-dependencies]

[dev-dependencies]
table-test = "0.2.1"
#[cfg(test)] // <-- not needed in integration tests
#[macro_use]
extern crate table_test;

表格迭代器返回一个元组(test_case, input, expected)。如果您有多个输入,只需使用输入的元组。test_case允许您添加类似givenwhenthen的注释,还可以使用descriptioncustom,让您能够以最佳方式记录测试。

示例

如果我们为输入两个值的add函数创建一个简单的测试

#[test]
fn test_add() {
    let table = vec![
        ((1, 2), 3),
        ((2, 5), 7),
        ((0, 0), 0),
        ((0, 1), 1),
        ((2, 2), 4),
    ];

    for (validator, (input_1, input_2), expected) in table_test!(table) {
        let actual = add(input_1, input_2);

        validator
            .given(&format!("{}, {}", input_1, input_2))
            .when("add")
            .then(&format!("it should be {}", expected))
            .assert_eq(expected, actual);
    }
}

如果我们错误地实现了add函数并执行了乘法,输出将如下所示

multiple inputs

正如我们所见,与正常的assert_eq!输出相比,这将更容易调试。但收益在于当我们处理更复杂的东西时。以下示例测试了更改名称的方法,结果如下

mutable struct

更多示例可以在示例文件夹中找到。

依赖关系

~245KB