dyntest
A small Rust library for dynamically creating test cases.
Usage
# Cargo.toml
[[]]
= "test_name"
= false
// tests/test_name.rs
use ;
dyntest!;
running 3 tests
test a ... ok
test pq ... ok
test xyz ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Features
Test Grouping
Using DynTester::group, multiple related tests can be given a shared prefix, akin to a mod for static tests:
use ;
dyntest!;
running 2 tests
test foo::bar::baz ... ok
test foo::qux ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Globbing
When the glob feature is enabled (which it is by default), DynTester exposes
glob and glob_in methods, which facilitate generating tests from files in a
directory:
use ;
dyntest!;
my/test/files/
foo.ext
bar.ext
baz/
qux.ext
something.unrelated
running 3 tests
test foo ... ok
test bar ... ok
test baz::qux ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Limitations
Using dyntest requires a nightly compiler, as it uses the unstable test crate.
In any given test files, the tests must either be all static or all dynamic; if
you use dyntest! in a file, any #[test] fns will be silently ignored by
rustc (this is inherent to harness = false).
Multiple invocations of dyntest! in the same test file are not supported;
either separate it into multiple test files, or merge the dyntest! invocations
(the macro supports multiple arguments).