11个版本 (6个重大更新)
0.7.2 | 2024年5月31日 |
---|---|
0.7.1 | 2024年5月31日 |
0.6.0 | 2024年5月11日 |
0.5.1 | 2024年5月10日 |
0.1.0 | 2024年4月12日 |
#151 在 数据结构
2,503 每月下载量
用于 7 个crate(直接使用3个)
37KB
962 代码行
file_test_runner
通过 cargo test
运行在文件中找到的测试的基于文件的测试运行器。
这包含两个主要步骤
- 使用提供的策略(
file_test_runner::collect_tests
)从指定的目录收集所有文件。 - 使用自定义测试运行器(
file_test_runner::run_tests
)将所有文件作为测试运行。
它收集的文件可以是任何格式。如何结构化由您决定。
示例
- https://github.com/denoland/deno_doc/blob/main/tests/specs_test.rs
- https://github.com/denoland/deno_graph/blob/main/tests/specs_test.rs
- https://github.com/denoland/deno/tree/main/tests/specs
设置
-
在您的 Cargo.toml 中添加一个
[[test]]
部分[[test]] name = "specs" path = "tests/spec_test.rs" harness = false
-
添加一个
tests/spec_test.rs
文件以使用主函数运行测试use file_test_runner::collect_and_run_tests; use file_test_runner::collection::CollectedTest; use file_test_runner::collection::CollectOptions; use file_test_runner::collection::strategies::TestPerFileCollectionStrategy; use file_test_runner::RunOptions; use file_test_runner::TestResult; fn main() { collect_and_run_tests( CollectOptions { base: "tests/specs".into(), strategy: Box::new(TestPerFileCollectionStrategy { file_pattern: None }), filter_override: None, }, RunOptions { parallel: false, }, // custom function to run the test... |test| { // * do something like this // * or do some checks yourself and return a value like TestResult::Passed // * or use `TestResult::from_maybe_panic_or_result` to combine both of the above TestResult::from_maybe_panic(AssertUnwindSafe(|| { run_test(test); })) } ) } // The `test` object only contains the test name and // the path to the file on the file system which you can // then use to determine how to run your test fn run_test(test: &CollectedTest) { // Properties: // * `test.name` - Fully resolved name of the test. // * `test.path` - Path to the test file this test is associated with. // * `test.data` - Data associated with the test that may have been set // by the collection strategy. // helper function to get the text let file_text = test.read_to_string().unwrap(); // now you may do whatever with the file text and // assert it using assert_eq! or whatever }
-
将一些文件添加到
tests/specs
目录或该目录的子目录中。 -
运行
cargo test
以运行测试。过滤应直接工作。
依赖项
~3.5–9.5MB
~90K SLoC