4 releases
Uses old Rust 2015
0.2.1 | Apr 9, 2018 |
---|---|
0.2.0 | Mar 6, 2018 |
0.1.1 | Mar 1, 2018 |
0.1.0 | Mar 1, 2018 |
#864 in Testing
145 downloads per month
Used in 10 crates
(6 directly)
230KB
413 lines
Table Test
This library aims to make table testing reliable in Rust.
The main problem of table testing with basic Rust is assert_eq!
calling panic!
.
It means that when an assertion fails, then the rest of the test function is not executed.
In the case of a table test, it will result with potentially multiple use cases untested, making the output of that test unreliable.
Usage
Specify this crate as [dev-dependencies]
.
[dev-dependencies]
table-test = "0.2.1"
#[cfg(test)] // <-- not needed in integration tests
#[macro_use]
extern crate table_test;
The table iterator returns a tuple (test_case, input, expected)
.
If you have more than one input, just use a tuple of inputs.
The test_case
allows you to add comments like given
when
and then
, but also description
and custom
giving you the freedom to log your tests the best way possible.
Examples
If we make a simple test for an add
function that takes two values as input:
#[test]
fn test_add() {
let table = vec![
((1, 2), 3),
((2, 5), 7),
((0, 0), 0),
((0, 1), 1),
((2, 2), 4),
];
for (validator, (input_1, input_2), expected) in table_test!(table) {
let actual = add(input_1, input_2);
validator
.given(&format!("{}, {}", input_1, input_2))
.when("add")
.then(&format!("it should be {}", expected))
.assert_eq(expected, actual);
}
}
If we make a mistake in the implementation of the add
function and multiplying instead, then the output will look like this:
As we can see, it would be easier to debug than with a normal assert_eq!
output.
But the gain is when we work with something more complex.
The example here test the changing name method and the result looks like this:
More examples can be found in the examples folder.
Dependencies
~245KB