#bdd #tdd #unit-testing

rs_unit

RsUnit 是一个类似于 Elixir 的 ExUnit 的测试库。

2 个版本

0.0.2 2021 年 10 月 14 日
0.0.1 2021 年 10 月 13 日
0.0.0 2021 年 10 月 10 日

#830 in 测试

MIT 许可证

19KB
351

RsUnit

GitHub issues Cargo Downloads Cargo Latest version

RsUnit 是一个 Rust 的单元测试框架。它是对本地 cargo test 接口的包装。RsUnit 模拟了 ExUnit 的结构和行为。

结构

测试套件总是包含在一个 rs_unit 块中。在这个 rs_unit 块内部可以有多个 describe 块。一个 describe 块用于组织相关的测试。RsUnit 的核心是 describe 块。这个块由三个部分组成;一个 setuptestteardown 部分。其中,setupteardown 是可选的。唯一必须的部分是 test

设置

setup 块包含在测试之前运行的逻辑。这里我们区分了 setupsetup_allsetup 块会与每个测试一起运行。而 setup_all 块只会在每个测试之前运行一次。数据库或驱动器的设置是 setup 块的使用案例。

测试

每个 describe 块包含多个 test 块。数量没有限制,但请注意保持测试尽可能短。

清理

teardown 块会在测试之后运行。与 setup 块类似,您可以选择使用 teardownteardown_all。一个典型的使用案例是在 setup 块中创建的数据库或文件夹的删除。

示例

use rs_unit::rs_unit;

pub fn add_number(number_one: i32, number_two: i32) -> i32 {
    number_one + number_two
}

rs_unit! {
    describe "add_number/2" {
        test "success: Add two numbers" {
            let result = add_number(1, 1);

            assert_eq!(result, 2);
        }
    }
}

特别感谢

我要感谢 Discord 上的 NyxCode 和 Yandros FR-ES,以及 rodrimati1992,他们帮助我更好地理解过程宏的工作原理,有耐心并指引我正确的方向。

许可证

MIT 许可证 - 版权所有 (c) 2021 Marius Wilms

依赖项

~1.5MB
~35K SLoC