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.2.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")]
fn multiplication_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 out
Most 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