2009-10-19 3 views
6

Junit4には、double以外のすべてのプリミティブ(例えば、0)のためのAssert.assertArrayEquals()メソッドがあるようです。なぜ、junit4はdouble []に​​対してAssert.assertArrayEquals()を持たないのですか?

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

オンラインのjavadoc hereには記載されていませんが、このような方法があります(4.7)。 javadoc /バージョンでは確かに監視されていましたが、今はそこにあります。

7

このメソッドはJUnit 4.6で追加されたようですが、何らかの理由で4.5およびそれ以前のバージョンでは欠落しています。新しいJUnitバージョンにアップグレードする際に問題はないと思います。

1

JUnitのバグデータベースによれば、それらは "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詳細

のために
関連する問題