为什么 junit4 没有用于 double[] 的 Assert.assertArrayEquals() ?

发布于 2024-08-07 19:05:15 字数 527 浏览 10 评论 0 原文

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

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

and

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

但不是

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

or

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

(后者考虑了双精度数的可变范围)。我不应该编写这样的函数有根本原因吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

东北女汉子 2024-08-14 19:05:15

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

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.

你又不是我 2024-08-14 19:05:15

它确实有这样的方法(在 4.7 中),尽管在线 javadoc 此处。这肯定是 javadoc/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.

顾冷 2024-08-14 19:05:15

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.

铁憨憨 2024-08-14 19:05:15

只需使用:

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

您可能需要它来舍入结果值以根据预期进行测试:

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

请参阅 javdoc 了解更多信息

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文