почему junit4 не имеет Assert.assertArrayEquals () для double[]s?

есть Assert.assertArrayEquals() методы в Junit4 для всех примитивов, кроме 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.7), хотя он не документирован в онлайн-javadoc здесь. Это, конечно, было упущение в javadoc / версии, но оно есть сейчас.


метод, похоже, был добавлен в JUnit 4.6, но по какой-то причине отсутствует в 4.5 и предыдущих версиях. Я бы не ожидал каких-либо проблем с обновлением до более новой версии JUnit.


согласно базе данных ошибок JUnit, они являются"работаем над этим". Основываясь на других ответах, похоже, что база данных ошибок не полностью синхронизирована с реальностью.


просто использовать:

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

вам может понадобиться это, чтобы округлить значения результатов для тестирования против ожидаемого:

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

посмотреть javdoc дополнительная информация