3 个不稳定版本

0.2.1 2023 年 6 月 1 日
0.2.0 2023 年 6 月 1 日
0.1.0 2023 年 5 月 30 日

#830测试

Download history 415/week @ 2024-03-13 320/week @ 2024-03-20 150/week @ 2024-03-27 78/week @ 2024-04-03 290/week @ 2024-04-10 74/week @ 2024-04-17 47/week @ 2024-04-24 86/week @ 2024-05-01 41/week @ 2024-05-08 203/week @ 2024-05-15 566/week @ 2024-05-22 388/week @ 2024-05-29 379/week @ 2024-06-05 417/week @ 2024-06-12 320/week @ 2024-06-19 99/week @ 2024-06-26

1,278 每月下载量
ocpi-tariffs 中使用

自定义许可证

9KB

test-each

基于文件和目录在编译时生成测试。

用法

此 crate 包含三个属性,它们都基于文件通配符模式生成测试。每个属性生成具有不同参数类型的测试。生成的测试将使用文件名的清理版本命名。

文本文件

使用 &'static strtest_each::file 接收文件内容。这将忽略任何匹配的目录。

#[test_each::file(glob = "data/*.txt")]
fn test_file(content: &str) {
    // check contents
}

如果 data 包含文件 foo.txtbar.txt,将生成以下代码

#[test]
fn test_file_foo() {
    test_file(include_str("data/foo.txt"))
}

#[test]
fn test_file_bar() {
    test_file(include_str("data/bar.txt"))
}

二进制文件

使用 &'static [u8]test_each::blob 接收文件内容。这将忽略任何匹配的目录。

#[test_each::blob(glob = "data/*.bin")]
fn test_bytes(content: &[u8]) {
    // check contents
}

声明第二个参数以接收文件的路径。

#[test_each::blob(glob = "data/*.bin")]
fn test_bytes(content: &[u8], path: PathBuf) {
    // check contents and path
}

文件和目录的路径

使用 PathBuftest_each::path 接收文件路径。这包括任何匹配的目录。

#[test_each::path(glob = "data/*")]
fn test_bytes(path: PathBuf) {
    // check path
}

自定义函数名

默认情况下,生成的测试函数名称由没有扩展名的转义文件名组成。使用 name 属性来更改函数名的格式化方式。

使用 name(segments = <n>)n 个路径段(从右到左)添加到名称中。

使用 name(index) 在测试名称的末尾添加一个唯一的索引。这将防止名称冲突。

使用 name(extension) 在测试名称的末尾包含文件扩展名。

/// The generated function name will be `test_file_bar_baz_data_txt_0`
#[test_each::file(glob = "foo/bar/baz/data.txt", name(segments = 3, index, extension))]
fn test_file(_: &str) {}

注意

对已包含文件的任何更改都将正确触发重新编译,但创建一个匹配glob的新文件可能不会导致重新编译。为了解决这个问题,请添加一个生成构建文件,该文件发出 cargo-rerun-if-changed={<glob directories>}

依赖

~0.4–0.8MB
~19K SLoC