1 个不稳定版本
0.1.0 | 2023年3月30日 |
---|
#66 在 #source-file
8KB
104 行
一个用于测试接受字符串输入并返回字符串的函数的工具。
工作原理
trycall
宏接受一个目录的路径。该目录应该包含每个测试用例的两个文件
- 源 - 带有
.txt
扩展名的源文件 - 预期 - 带有
.out
扩展名的预期输出文件
trycall
宏将依次在每个 源 文件上运行函数,并将输出与 预期 文件进行比较。
以下示例将在 tests/add_one
目录(相对于包的根目录)中的每个 源 文件上运行 add_one
函数,并将输出与相应的 预期 文件进行比较(例如,tests/add_one/word.txt
将与 tests/add_one/word.out
进行比较)。
- 如果输出与 预期 文件不匹配,测试将失败。
- 如果 预期 文件不存在,它将被视为空字符串。
- 如果函数崩溃,测试将失败。
示例
pub fn add_one(s: &str) -> String {
s.parse::<i32>()
.map(|n| (n + 1).to_string())
.unwrap()
}
#[cfg(test)]
mod tests {
#[test]
fn add_one() {
trycall::trycall!("tests/add_one").with(super::add_one);
}
}
更新预期输出
如果您想更新预期输出,可以传递 UPDATE_EXPECT
环境变量。例如
UPDATE_EXPECT=1 cargo test
过滤
您可以通过传递以 trycall=
前缀后跟一个字符串来过滤测试用例,该字符串将与 源 文件名进行匹配。例如,如果您想运行 negative_number
测试用例的测试,您可以运行以下命令中的任何一项
cargo test -- trycall=negative_number
cargo test -- trycall=negative
cargo test -- trycall=number
您也可以直接将测试用例 源 文件路径传递给 trycall
宏
#[test]
fn add_one() {
trycall::trycall!("tests/add_one/negative_number.txt").with(super::add_one);
}
依赖项
~145KB