2009-10-19 96 views
6

在Junit4中,对于除双重以外的所有基元似乎都有Assert.assertArrayEquals()方法,例如,为什么junit4没有Assert.assertArrayEquals()for double [] s?

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) 

(后者占双打的变量范围)。为什么我不应该写这样的功能有一个根本原因吗?

回答

6

它确实有这样一种方法(在4.7中),虽然它没有记录在线上的javadoc here。这当然是javadoc /版本中的一个疏忽,但它现在在那里。

7

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

1

根据JUnit bug数据库,他们是“working on it”。根据其他答案,这听起来像错误数据库不完全与现实同步。

0

只需使用:

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

您可能需要这圆你的结果值来测试与预期:

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

更多信息

javdoc
相关问题