【问题标题】:JUnit assertEquals(double expected, double actual, double epsilon) [duplicate]JUnit assertEquals(双重预期,双重实际,双重ε)[重复]
【发布时间】:2011-05-09 16:31:50
【问题描述】:

可能重复:
JUnit: assertEquals for double values

显然assertEquals(double expected, double actual) 已被弃用。

考虑到 JUnit 的广泛使用,JUnit 的 javadocs 令人惊讶地缺乏。你能告诉我如何使用新的assertEquals(double expected, double actual, double epsilon)吗?

【问题讨论】:

  • 是的,刚刚意识到这是重复的。
  • 如果它是重复的,那么就这样发表评论,而不是仅仅传递一个链接作为一个新的答案。
  • 是的,它是重复的。我投票关闭。谢谢大家!

标签: java junit


【解决方案1】:

Epsilon 是您的“模糊因子”,因为双精度数可能不完全相等。 Epsilon 可让您描述它们必须有多接近。

如果您期望 3.14159,但需要从 3.14059 到 3.14259(即在 0.001 以内),那么您应该写类似

double myPi = 22.0d / 7.0d; //Don't use this in real life!
assertEquals(3.14159, myPi, 0.001);

(顺便说一句,22/7 的结果是 3.1428+,并且会导致断言失败。这是一件好事。)

【讨论】:

  • 我有一个特殊的max 函数,其中max(NaN,3.0) 等于3.0,这与告诉NaN 的原始行为相反。在我的测试用例中,assertEquals(double,double) 是理想的东西,我不明白为什么它被弃用了。有时即使您使用floatdouble,您也可以期待准时的结果。
  • delta 值确实是比较中允许的“错误”或“不确定性”。其他流行的测试框架如 TestNG 和 MsTest 也有类似的 AssertEqual 方法。 TestNG 有 assertEquals(double actual, double expected, double delta) NUnit 有 Assert.AreEqual( double expected, double actual, double tolerance ) MsTest 有 Assert.AreEqual Method (Double, Double, Double)
猜你喜欢
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多