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 测试
2,146 每月下载量
用于 16 crates
17KB
278 行
speculate.rs
受 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",如 static
,const
,fn
等,以及 5 种特殊类型的块
-
describe
(或其别名context
)- 用于将测试分组到层次结构中,以提高可读性。可以任意嵌套。 -
before
- 包含在插入到每个兄弟和嵌套it
和bench
块之前要设置的代码。 -
after
- 包含在插入到每个兄弟和嵌套it
和bench
块之后要执行的清理代码。 -
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