#string #output #testing #case #function #source-file #trybuild

trycall

一个类似于 trybuild 的工具,但用于测试以字符串为输入并返回字符串的函数

1 个不稳定版本

0.1.0 2023年3月30日

#66#source-file

MIT/Apache

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