JUnit 类型安全的 assertEquals

JUnit type safe assertEquals

有没有一种方法可以禁止我在编译时为不同的类型调用 assertEquals()?我希望这段代码不可编译:

    String s = "foo";
    Integer i = 1;
    assertEquals(s, i);

编辑:这是因为在重构过程中,我更改了测试 class 中一个 getter 的返回类型,但我的单元测试仍然可以编译。他们开始时失败了,但这还不够好。

使用 Junit 匹配器 API:

    String s = "foo";
    Integer i = 1;
    assertThat(s, equalTo(i));

这会在编译时给你一个错误,有些人认为它在上面很方便,因为你还可以使用除 equals 之外的其他匹配器。