#assertions #unit-testing #assert #unit

assertor

具有可读性失败信息的流畅断言库

2 个版本

0.0.2 2023 年 4 月 30 日
0.0.1 2021 年 9 月 18 日

#303测试

Download history 1312/week @ 2024-03-14 1426/week @ 2024-03-21 1008/week @ 2024-03-28 1281/week @ 2024-04-04 1248/week @ 2024-04-11 1445/week @ 2024-04-18 1455/week @ 2024-04-25 1434/week @ 2024-05-02 1071/week @ 2024-05-09 1096/week @ 2024-05-16 1322/week @ 2024-05-23 1276/week @ 2024-05-30 1162/week @ 2024-06-06 1168/week @ 2024-06-13 1706/week @ 2024-06-20 1252/week @ 2024-06-27

5,528 每月下载量
4 crates 中使用

Apache-2.0 协议

115KB
2.5K SLoC

Assertor

Assertor 使测试断言和失败信息更具可读性。

crates.io license docs.rs

Assertor 在 API 设计和错误信息方面受 Java Truth 的很大影响,但这完全是一个不同的项目。

免责声明

这不是一个官方的 Google 产品,这只是恰好由 Google 拥有的代码。

⚠ API 仍处于不稳定状态,可能直到 1.0 版本之前都可能发生变化。

示例

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");
}

失败案例

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"]
}

功能想法

  • 颜色 / 加粗
  • 更好的 diff:vec
  • 更好的 diff:set
  • 更好的 diff:HashMap

依赖项