16个版本 (8个破坏性更新)
0.9.1 | 2023年12月14日 |
---|---|
0.9.0 | 2023年11月27日 |
0.8.1 | 2023年10月4日 |
0.8.0 | 2023年6月27日 |
0.4.0 | 2020年12月29日 |
#158 in 文件系统
每月下载量:9,452
用于 18 crates
44KB
609 行
半持久、范围测试目录
这个crate的目的是使测试中临时目录的使用更加容易,主要通过在测试函数的某个位置调用testdir!()
宏来实现。目录是按照范围和测试来组织的,测试结束后将可用于检查。在随后的测试运行中,将清理旧的测试目录。
如果你曾经使用过pytest的tmp_path
或tmpdir
固件,这种模式应该很相似。
默认情况下,测试目录将在cargo的目标目录中创建
target/testdir-$N/module/path/test_name
在这里,$N
是一个整数生成号,随着每次cargo test
调用而增加。在下一个cargo test
运行中,将删除8个最新版本之前的版本。
还有一个指向最新版本的符号链接
target/testdir-current -> testdir-$N`
然而,请注意,在Windows上,有时由于权限问题,这可能无法更新,这个符号链接在Windows上是尽力而为的。
示例
即使执行这个命令cargo test --jobs=1
,这些测试仍然会通过,因为每个测试都有自己的唯一目录
// E.g. in lib.rs
mod tests {
use std::path::PathBuf;
use testdir::testdir;
#[test]
fn test_write() {
let dir: PathBuf = testdir!();
let path = dir.join("hello.txt");
std::fs::write(&path, "hi there").ok();
assert!(path.exists());
}
#[test]
fn test_read() {
let dir: PathBuf = testdir!();
let path = dir.join("hello.txt");
assert!(!path.exists());
}
}
之后,您可以检查目录,它们应该看起来像这样
$ tree target/
target/
+- testdir-0
| +- cratename
| +- tests
| +- test_read
| +- test_write
| +- hello.txt
+- testdir-current -> testdir-0
反馈和贡献
代码位于https://github.com/flub/testdir上的git仓库中,您可以从那里创建问题、克隆仓库并创建拉取请求。
依赖项
~4–6.5MB
~133K SLoC