Java JUnit类型安全assertEquals

Java JUnit类型安全assertEquals,java,junit,Java,Junit,有没有一种方法会禁止我在编译时为不同的类型调用assertEquals()?我希望此代码不可编译: String s = "foo"; Integer i = 1; assertEquals(s, i); 编辑:这是因为在重构期间,我更改了测试类的一个getter返回类型,但我的单元测试仍然是可编译的。它们在启动时失败,但这还不够好。使用Junit Matcher API: String s = "foo"; Integer i = 1; ass

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

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

编辑:这是因为在重构期间,我更改了测试类的一个getter返回类型,但我的单元测试仍然是可编译的。它们在启动时失败,但这还不够好。

使用Junit Matcher API:

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

这会在编译时给您带来一个错误,有些人认为这样做很方便,因为您还可以使用equals以外的其他匹配器。

请解释为什么要使用这种方法。这解决了什么问题?这是因为在重构期间,我更改了测试类的一个getter的返回类型,但我的单元测试仍然是可编译的。它们在启动时失败了,但这还不够好。