当我有:
double[] array1 = ..., array2 = ...;
assertArrayEquals(array1, array2, 1e-10);
我收到IntelliJ的警告,说明:
断言表达式'assertArrayEquals(array1,array2,1e-10);'可以用'assertThat'调用替换
[此检查]报告 Assert.assertEquals , Assert.assertTrue 等方法的用法,当它可以迁移到 Assert.assertThat 时
我试图找到一个与assertThat
一起使用的匹配器,可以处理浮点舍入错误。我在内容助理中找不到任何内容,我发现Array.isArray
可以使用
assertThat(array2, is(org.hamcrest.number.IsCloseTo.closeTo(array1, 1e-10)));
但是,我收到错误,找不到包org.hamcrest.number
。确实,hamcrest
只有两个子包core
和internal
。事实证明,IntelliJ 仅运送了hamcrest-core jar,而不是其他的hamcrest jar。
如果IntelliJ告诉我我的代码可以迁移到assertThat
,那么不应该有可用的代码吗?这个[警告信息]是一个IntelliJ错误吗?
我的主要问题是,如何像IntelliJ那样迁移此语句?
[edit]回想起来,org.hamcrest.number.IsCloseTo
甚至不处理数组,所以这更令人费解。