9 个不稳定版本
使用旧 Rust 2015
0.6.3 | 2016年10月24日 |
---|---|
0.6.0 | 2016年7月8日 |
0.5.3 | 2016年2月25日 |
0.5.1 | 2016年1月11日 |
0.2.0 | 2016年1月10日 |
#447 在 测试 中
10KB
207 行
Plague
Rust 的参数化测试工具
是什么
此 rustc
插件添加了一个宏,帮助你创建参数化测试
// Basic usage
plague! {
for [
(1, 1),
(2, 2),
]
test fn eq(a: i32, b: i32) {
assert_eq!(a, b);
}
}
// You can also specify the expected value, Plague will `assert_eq!` the result for you
plague! {
for [1 -> 2, 2 -> 4]
test fn double(a: i32) -> i32 {
2*a
}
}
// And you can call functions defined somewhere else or give meaningful names to test cases
plague! {
for [
'empty ("",) -> 0,
("foo",) -> 3,
'c_str ("foo\u{0}bar",) -> 7,
]
test str::len
}
为什么
插件将为每个参数集生成一个测试函数,这样,运行 cargo test
将显示每个失败的值,而不仅仅是其中一个
running 8 tests
test pos#4 ... ok
test pos#2 ... FAILED
test pos#3 ... FAILED
test pos#5 ... ok
test pos'empty ... ok
test pos'not_found ... ok
test pos'unary ... FAILED
test without_plague ... FAILED
failures:
---- pos#2 stdout ----
thread 'pos#2' panicked at 'test failed: got `None`, expected `Some(0)`', examples/cmp.rs:15
---- pos#3 stdout ----
thread 'pos#3' panicked at 'test failed: got `Some(2)`, expected `Some(0)`', examples/cmp.rs:15
---- pos'unary stdout ----
thread 'pos'unary' panicked at 'test failed: got `None`, expected `Some(0)`', examples/cmp.rs:15
---- without_plague stdout ----
thread 'without_plague' panicked at 'assertion failed: `(left == right)` (left: `None`, right: `Some(0)`)', examples/cmp.rs:41
failures:
pos#2
pos#3
pos'unary
without_plague
test result: FAILED. 4 passed; 4 failed; 0 ignored; 0 measured