#test #case #tests #unit #testing

dev test-case

Provides #[test_case(…)] procedural macro attribute for generating parametrized test cases easily

20 releases (11 stable)

2.1.0 May 18, 2022
2.0.2 Mar 25, 2022
2.0.0 Feb 22, 2022
2.0.0-rc1 Dec 19, 2021
0.3.3 Oct 1, 2019

#8 in Testing

Download history 19497/week @ 2022-03-15 22830/week @ 2022-03-22 23946/week @ 2022-03-29 23055/week @ 2022-04-05 22691/week @ 2022-04-12 25444/week @ 2022-04-19 25815/week @ 2022-04-26 25819/week @ 2022-05-03 29078/week @ 2022-05-10 27728/week @ 2022-05-17 24932/week @ 2022-05-24 31297/week @ 2022-05-31 31502/week @ 2022-06-07 26675/week @ 2022-06-14 28568/week @ 2022-06-21 23839/week @ 2022-06-28

115,923 downloads per month
Used in fewer than 162 crates

MIT license

14KB
171 lines

Crates.io Crates.io 1.49+ Docs.rs MIT License Build Status Maintenance

Test Case

Overview

test_case crate provides procedural macro attribute that generates parametrized test instances.

Getting Started

Crate has to be added as a dependency to Cargo.toml:

[dev-dependencies]
test-case = "2.1.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;

Example usage:

#[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

Documentation

Most up to date documentation is available in our wiki.

License

Licensed under of MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)

Contributing

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

Dependencies

~0.3–1MB
~22K SLoC