5 个版本
0.2.3 | 2023年1月9日 |
---|---|
0.2.2 | 2022年12月19日 |
0.2.1 | 2022年12月15日 |
0.2.0 | 2022年12月8日 |
0.1.0 | 2022年11月4日 |
在 测试 中排名第 458
22KB
292 代码行
test_gen
一个综合的函数式宏,用于简洁地定义参数化测试。
此 crate 提供了与其同名的函数式宏 test_gen
,它允许简洁地定义一系列命名的测试,实现参数化参数格式,以最小化指定类似测试批次时通常所需的样板代码。
文档可以在 Docs.rs 中找到。
用法
最低支持的 Rust 版本 1.63.0
test_gen
可以使用以下命令添加到项目中
cargo add test_gen --dev
或者,通过将其 Cargo.toml
文件中的以下行添加
[dev-dependancies]
test_gen = "0.2.3"
示例
水果
use test_gen::*;
enum Fruit<T> {
Apple,
Pear,
Other(T),
}
enum BrambleFruit {
BlackBerry,
}
trait NameOf {
fn name_of(&self) -> &str;
}
impl<T: NameOf> NameOf for Fruit<T> {
fn name_of(&self) -> &str {
use Fruit::*;
match self {
Apple => "apple",
Pear => "pear",
Other(fruit) => fruit.name_of(),
}
}
}
impl NameOf for BrambleFruit {
fn name_of(&self) -> &str {
use BrambleFruit::*;
match self {
BlackBerry => "blackberry",
}
}
}
// Helper function
fn assert_fruit<T: NameOf>(fruit: Fruit<T>, name: &str) {
assert_eq!(fruit.name_of(), name);
}
// Test specification
test_gen! {
// Normal turbofish syntax can be used,
// when concrete type specification is required
fn assert_fruit::<BrambleFruit> => {
apple: {
(Fruit::Apple, "apple")
},
// Applying case specific attributes
pear: {
#[ignore]
(Fruit::Pear, "pear")
},
isnt_pear: {
#[should_panic]
(Fruit::Pear, "apple")
},
blackberry: {
(Fruit::Other(BrambleFruit::BlackBerry), "blackberry")
},
}
}
许可证
test_gen
采用 BSD 3-Clause 许可。
有关详细信息,请参阅 LICENSE。
依赖项
~1.5MB
~35K SLoC