#test-framework #rspec #test

dev speculate

受 RSpec 启发的 Rust 最小测试框架

30 个版本

0.1.2 2019 年 4 月 23 日
0.1.1 2019 年 1 月 11 日
0.1.0 2018 年 11 月 23 日
0.0.27 2018 年 7 月 10 日
0.0.11 2015 年 3 月 25 日

#352 in 测试

Download history 460/week @ 2024-03-13 252/week @ 2024-03-20 216/week @ 2024-03-27 260/week @ 2024-04-03 554/week @ 2024-04-10 339/week @ 2024-04-17 371/week @ 2024-04-24 321/week @ 2024-05-01 410/week @ 2024-05-08 334/week @ 2024-05-15 415/week @ 2024-05-22 627/week @ 2024-05-29 772/week @ 2024-06-05 548/week @ 2024-06-12 598/week @ 2024-06-19 179/week @ 2024-06-26

2,146 每月下载量
用于 16 crates

MIT 许可证

17KB
278

speculate.rs 构建状态 speculate at crates.io

受 RSpec 启发的 Rust 最小测试框架。

安装

speculate 添加到 Cargo.toml 文件的 dev-dependencies 部分

[dev-dependencies]
speculate = "0.1"

并在你想要添加测试的 Rust 文件顶部添加以下内容

#[cfg(test)]
extern crate speculate;

#[cfg(test)]
use speculate::speculate;  // Must be imported into the current scope.

用法

Speculate 提供了 speculate! 语法扩展。在 speculate! { ... } 内,你可以有任意 "Item",如 staticconstfn 等,以及 5 种特殊类型的块

  • describe(或其别名 context)- 用于将测试分组到层次结构中,以提高可读性。可以任意嵌套。

  • before - 包含在插入到每个兄弟和嵌套 itbench 块之前要设置的代码。

  • after - 包含在插入到每个兄弟和嵌套 itbench 块之后要执行的清理代码。

  • it(或其别名 test)- 包含测试。

    例如

    it "can add 1 and 2" {
        assert_eq!(1 + 2, 3);
    }
    

    你可以选择性地为此块添加属性

    #[ignore]
    test "ignore" {
        assert_eq!(1, 2);
    }
    
    #[should_panic]
    test "should panic" {
        assert_eq!(1, 2);
    }
    
    #[should_panic(expected = "foo")]
    test "should panic with foo" {
        panic!("foo");
    }
    
  • bench - 包含基准测试。

    例如

    bench "xor 1 to 1000" |b| {
        b.iter(|| (0..1000).fold(0, |a, b| a ^ b));
    }
    

完整示例(来自 tests/example.rs

extern crate speculate;

use speculate::speculate;

speculate! {
    const ZERO: i32 = 0;

    fn add(a: i32, b: i32) -> i32 {
        a + b
    }

    describe "math" {
        const ONE: i32 = 1;

        fn sub(a: i32, b: i32) -> i32 {
            a - b
        }

        before {
            let two = ONE + ONE;
        }

        it "can add stuff" {
            assert_eq!(ONE, add(ZERO, ONE));
            assert_eq!(two, add(ONE, ONE));
        }

        it "can subtract stuff" {
            assert_eq!(ZERO, sub(ONE, ONE));
            assert_eq!(ONE, sub(two, ONE));
        }
    }
}

许可证

MIT

依赖关系

~2MB
~47K SLoC