19 个不稳定版本 (3 个重大更改)
0.4.5 | 2020年9月13日 |
---|---|
0.4.4 | 2020年9月13日 |
0.4.1 | 2020年8月5日 |
0.3.2 | 2020年8月3日 |
0.1.0 | 2020年7月23日 |
#28 in #testing-framework
2,065 每月下载量
用于 ansi_parser_extended
25KB
337 行
声明式测试框架
Demonstrate 允许在 demonstrate!
宏中编写测试,而无需重复代码,该宏将生成相应的完整测试。
此测试库深受 speculate.rs 和 ruspec 的影响,这两个库都受到了 RSpec 的启发。
Demonstrate 使用以下新的代码块定义:
-
before
/after
— 在当前和嵌套的describe
/context
块的开始或结束时包含的源代码块。 -
describe
/context
—describe
和context
是彼此的别名。指定一个新的测试范围,可以包含一个before
和/或after
块,嵌套的describe
/context
块,以及it
/test
块。这些转换为 Rustmod
块,但还可以定义共享的测试属性,例如测试具有外部属性、异步执行以及具有Return<()>
类型。 -
it
/test
—it
和test
是彼此的别名。代表一个测试,转换为 Rust 单元测试。
示例
use demonstrate::demonstrate;
fn is_4() -> u8 {
4
}
demonstrate! {
describe "module" {
use super::*;
before {
let four = 4;
}
#[should_panic]
it "can fail" {
assert!(four != 4)
}
test "is returnable" -> Result<(), &'static str> {
if is_4() == four {
Ok(())
} else {
Err("It isn't 4! :o")
}
}
#[async_attributes::test]
async context "asynchronous" {
before {
let is_4_task = async_std::task::spawn(async {
is_4()
});
}
it "awaits" {
assert_eq!(four, is_4_task.await)
}
}
}
}
许可证
根据 MIT 许可证 授权。依赖
~7.5MB
~164K SLoC