google/assertor

Fluent assertion library for Rust with readable messages.

Rust

152

132 commits

updated Jun 18, 2026

See the code

README

Assertor

Assertor makes test assertions and failure messages more human-readable.

crates.io license docs.rs OpenSSF
Scorecard

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
assert
assertions
rust-library
testing

Contributors

dependabot[bot]

58 commits

cocuh

56 commits

kelebra

17 commits

MaciejWas

1 commits

google/assertor

Fluent assertion library for Rust with readable messages.

Rust

152

132 commits

updated Jun 18, 2026

See the code

README

Assertor

Assertor makes test assertions and failure messages more human-readable.

crates.io license docs.rs OpenSSF
Scorecard

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
assert
assertions
rust-library
testing

Contributors

dependabot[bot]

58 commits

cocuh

56 commits

kelebra

17 commits

MaciejWas

1 commits

Languages

Rust

100.0%