test_case
crate provides procedural macro attribute that generates parametrized test instances.
Crate has to be added as a dependency to Cargo.toml
:
toml
[dev-dependencies]
test-case = "2.2.2"
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:
rust
use test_case::test_case;
```rust
mod tests { use testcase::testcase;
#[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:
```sh $ cargo test
running 4 tests test tests::multiplicationtests::whenbothoperandsarenegative ... ok test tests::multiplicationtests::whenbothoperandsarepositive ... ok test tests::multiplicationtests::whenoperandsareswapped ... 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 comments
* cargo insta
- to review test snapshots
* cargo edit
- to add/remove dependencies
* cargo fmt
- to format code
* cargo clippy
- for all insights and tips
* cargo fix
- for fixing warnings