Java 为什么junit4没有用于双[]s的Assert.assertArrayEquals()?

Java 为什么junit4没有用于双[]s的Assert.assertArrayEquals()?,java,assert,junit4,Java,Assert,Junit4,Junit4中除了double之外的所有原语都有Assert.assertArrayEquals()方法,例如 Assert.assertArrayEquals(int[] expected, int[] actual) 及 但不是 Assert.assertArrayEquals(double[] expected, double[] actual, double eps) 或 (后者用于解释双打的可变范围)。我不应该编写这样一个函数有什么根本原因吗?它确实有这样一个方法(在4.7中),尽

Junit4中除了double之外的所有原语都有
Assert.assertArrayEquals()
方法,例如

Assert.assertArrayEquals(int[] expected, int[] actual)

但不是

Assert.assertArrayEquals(double[] expected, double[] actual, double eps)


(后者用于解释双打的可变范围)。我不应该编写这样一个函数有什么根本原因吗?

它确实有这样一个方法(在4.7中),尽管它没有在在线javadoc上记录。这当然是javadoc/版本中的一个疏忽,但现在已经存在了。

该方法似乎已经添加到JUnit4.6中,但由于某种原因,在4.5和以前的版本中缺失了。升级到较新的JUnit版本不会有任何问题。

根据JUnit bug数据库,它们是“”。根据其他答案,听起来bug数据库与现实并不完全同步。

只需使用:

 AssertTrue(**message**, Arrays.equals(**expected**,**result**)
您可能需要对结果值进行四舍五入,以根据预期值进行测试:

 public double roundTo2Decimals(double val) {
    DecimalFormat df2 = new DecimalFormat("###.####");
    return Double.valueOf(df2.format(val));
}
有关更多信息,请参阅

 AssertTrue(**message**, Arrays.equals(**expected**,**result**)
 public double roundTo2Decimals(double val) {
    DecimalFormat df2 = new DecimalFormat("###.####");
    return Double.valueOf(df2.format(val));
}