2 个不稳定版本
| 0.2.0 | 2019年10月10日 |
|---|---|
| 0.1.0 | 2019年10月4日 |
#584 in 测试
14KB
258 行
合规性测试
简单.yaml.测试:
1
===
a=b=c=2<3;
---
- Identifier: 1
- EqualsSign: 1
- Identifier: 1
- EqualsSign: 1
- Identifier: 1
- EqualsSign: 1
- Integer: 1
- LessThanSign: 1
- Integer: 1
- Semicolon: 1
...
test.rs:
use {
conformance, serde_yaml,
tinyc_lexer::{tokenize, Token},
};
#[conformance::tests(exact, serde=serde_yaml, file="tests/simple.yaml.test")]
fn lex_tokens(s: &str) -> Vec<Token> {
tokenize(s).collect()
}
此代码从 === 和 --- 之间获取输入,将其传递给测试函数,然后使用 ser 函数进行序列化。输出从 --- 和 ... 之间获取,然后通过 de序列化和重新序列化进行归一化。使用 assert_eq! 比较两种序列化形式。文件路径相对于 Cargo 清单。
一个合规性测试文件可以包含任意数量的测试。文件名和测试名(在 === 上方)结合并用于命名传递给标准 Rust 测试运行器的测试。
serde 参数代表可能提供的三个参数,按顺序替代其位置
ser:fn<T>(&T) -> String(默认serde::to_string)de:fn(&str) -> Result<value, impl Error>(默认serde::from_str)value:一个可以被传递给ser的类型(默认serde::Value)
您也可以只提供 ser 和 de,并且 value 的默认值是产生的类型。
更多信息,请参阅 dev.to 的公告帖子 或在 Discord 上 @ 我。
依赖项
~1.5MB
~35K SLoC