6

Junit4 中似乎有Assert.assertArrayEquals()除 double 以外的所有原语的方法,例如

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

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

但不是

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

或者

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

(后者说明双打的可变范围)。我不应该写这样一个函数有根本原因吗?

4

4 回答 4

7

该方法似乎已在 JUnit 4.6 中添加,但由于某种原因在 4.5 和以前的版本中缺少。我不希望升级到较新的 JUnit 版本会出现任何问题。

于 2009-10-19T22:28:11.790 回答
6

它确实有这样的方法(在 4.7 中),尽管它没有在此处的在线 javadoc 中记录。这当然是 javadoc/version 中的一个疏忽,但它现在就在那里。

于 2009-10-19T22:27:31.220 回答
1

根据 JUnit 错误数据库,他们正在“处理它”。根据其他答案,听起来错误数据库与现实并不完全同步。

于 2009-10-19T22:30:28.077 回答
0

只需使用:

 AssertTrue(**message**, Arrays.equals(**expected**,**result**)

您可能需要它来四舍五入您的结果值以针对预期进行测试:

 public double roundTo2Decimals(double val) {
    DecimalFormat df2 = new DecimalFormat("###.####");
    return Double.valueOf(df2.format(val));
}

有关更多信息,请参阅javdoc

于 2017-10-13T18:34:28.777 回答