3 releases
0.0.3 | Sep 24, 2024 |
---|---|
0.0.2 | Apr 30, 2023 |
0.0.1 | Sep 18, 2021 |
#77 in Testing
4,215 downloads per month
Used in 6 crates
185KB
4K
SLoC
Assertor
Assertor makes test assertions and failure messages more human-readable.
Assertor is heavily affected by Java Truth in terms of API design and error messages, but this is a totally different project from Java Truth.
Disclaimer
This is not an official Google product, it is just code that happens to be owned by Google.
⚠ The API is not fully stable and may be changed until version 1.0.
Example
use assertor::*;
#[test]
fn test_it() {
assert_that!("foobarbaz").contains("bar");
assert_that!("foobarbaz").ends_with("baz");
assert_that!(0.5).with_abs_tol(0.2).is_approx_equal_to(0.6);
assert_that!(vec!["a", "b"]).contains("a");
assert_that!(vec!["a", "b"]).has_length(2);
assert_that!(vec!["a", "b"]).contains_exactly(vec!["a", "b"]);
assert_that!(Option::Some("Foo")).has_value("Foo");
}
Failure cases
use assertor::*;
fn test_it() {
assert_that!(vec!["a", "b", "c"]).contains_exactly(vec!["b", "c", "d"]);
// missing (1) : ["d"]
// unexpected (1): ["a"]
// ---
// expected : ["b", "c", "d"]
// actual : ["a", "b", "c"]
}
anyhow
Supports asserting error value of anyhow
under anyhow
feature flag.
[dependencies]
assertor = { version = "*", features = ["anyhow"] }
use assertor::*;
use anyhow::anyhow;
fn anyhow_func() -> anyhow::Result<()> {
Err(anyhow!("failed to parse something in foobar"))
}
fn test_it() {
assert_that!(anyhow_func()).err().has_message("failed to parse something in foobar");
assert_that!(anyhow_func()).err().as_string().contains("parse something");
assert_that!(anyhow_func()).err().as_string().starts_with("failed");
assert_that!(anyhow_func()).err().as_string().ends_with("foobar");
}
Feature ideas
- Color / Bold
- Better diff: vec
- Better diff: set
- Better diff: HashMap
Dependencies
~71KB