Java JUnit类型安全assertEquals
有没有一种方法会禁止我在编译时为不同的类型调用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
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的返回类型,但我的单元测试仍然是可编译的。它们在启动时失败了,但这还不够好。