开发者

why does junit4 not have Assert.assertArrayEquals() for double[]s?

There appear to be Assert.assertArrayEquals() methods in Junit4 for开发者_运维知识库 all primitives other than double, e.g.

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

and

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

but not

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

or

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

(the latter to account for variable ranges of doubles). Is there a fundamental reason why I should not write such a function?


The method seem to have been added in JUnit 4.6, but is for some reason missing in 4.5 and previous versions. I wouldn't expect any problems upgrading to a newer JUnit version.


It does have such a method (in 4.7), although it is not documented on the online javadoc here. It was certainly an oversight in the javadoc/version, but it is there now.


According to the JUnit bug database, they are "working on it". Based on other answers, it sounds like the bug database is not completely in sync with reality.


just use:

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

You might need this to round your result values to test against expected:

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

See javdoc for more info

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜