test_case crate provides procedural macro attribute that generates parametrized test instances.
Crate has to be added as a dependency to Cargo.toml:
[dev-dependencies]
test-case = "2.0.0"and imported to the scope of a block where it's being called
(since attribute name collides with rust's built-in custom_test_frameworks) via:
use test_case::test_case;#[cfg(test)]mod tests {use test_case::test_case;#[test_case(-2, -4;"when both operands are negative")]#[test_case(2,4;"when both operands are positive")]#[test_case(4,2;"when operands are swapped")]fnmultiplication_tests(x:i8,y:i8){let actual = (x * y).abs();assert_eq!(8, actual)}}Output from cargo test for this example:
$ cargo test
running 4 tests
test tests::multiplication_tests::when_both_operands_are_negative ... ok
test tests::multiplication_tests::when_both_operands_are_positive ... ok
test tests::multiplication_tests::when_operands_are_swapped ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered outMost up to date documentation is available in our wiki.
Licensed under of MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
Project roadmap is available at link. All contributions are welcome.
Recommended tools:
cargo readme- to regenerate README.md based on template and lib.rs commentscargo insta- to review test snapshotscargo edit- to add/remove dependenciescargo fmt- to format codecargo clippy- for all insights and tipscargo fix- for fixing warnings