为什么 Eclipse 和 Maven 中 double 的比较不同?
Why is comparison of double in Eclipse and maven different?
我有一个从文件加载属性的程序。当代码中的配置文件中不存在 属性 时,我将 属性 设置为默认值。
在 JUnit 测试中,我正在测试如果未设置 属性,则该值为默认值。
我的 属性 是一些以毫秒为单位的阈值,它在字符串中然后转换为双精度和秒。默认值为 1000,因此 0.001 * 1000 = 1.0.
在我的代码中基本上是这样的(我使用的是 JUnit 4.8):
double defaultThreshold = 1.0;
double threshold = getThreshold();
Assert.assertEquals(0, Double.compare(defaultThreshold, threshold));
我认为 java 版本可能有问题,但我在 Eclipse 中使用 Java 1.6、1.7 和 1.8 进行了尝试,并且在我使用 java 的 mvn 中都通过了 ok 1.7.0_71 并且在与以下内容的比较中失败:
expected:<0> but was:<1>
注意:Double.compare returns 如果两个数字相等则为 0。
https://www.tutorialspoint.com/java/lang/double_compare.htm
此方法 returns 如果 d1 在数值上等于 d2,则值为 0;如果 d1 在数值上小于 d2,则值小于 0;如果 d1 在数值上大于 d2,则值大于 0。
问题不是双重比较,而是控制台 maven 和 eclipse 中 JUnit 的不同执行顺序:/
问题的原因是,在一种情况下,先前的测试影响了另一项测试,而在另一种情况下,不是因为不同的顺序,我希望它是相同的,但事实并非如此。
我有一个从文件加载属性的程序。当代码中的配置文件中不存在 属性 时,我将 属性 设置为默认值。
在 JUnit 测试中,我正在测试如果未设置 属性,则该值为默认值。
我的 属性 是一些以毫秒为单位的阈值,它在字符串中然后转换为双精度和秒。默认值为 1000,因此 0.001 * 1000 = 1.0.
在我的代码中基本上是这样的(我使用的是 JUnit 4.8):
double defaultThreshold = 1.0;
double threshold = getThreshold();
Assert.assertEquals(0, Double.compare(defaultThreshold, threshold));
我认为 java 版本可能有问题,但我在 Eclipse 中使用 Java 1.6、1.7 和 1.8 进行了尝试,并且在我使用 java 的 mvn 中都通过了 ok 1.7.0_71 并且在与以下内容的比较中失败:
expected:<0> but was:<1>
注意:Double.compare returns 如果两个数字相等则为 0。 https://www.tutorialspoint.com/java/lang/double_compare.htm 此方法 returns 如果 d1 在数值上等于 d2,则值为 0;如果 d1 在数值上小于 d2,则值小于 0;如果 d1 在数值上大于 d2,则值大于 0。
问题不是双重比较,而是控制台 maven 和 eclipse 中 JUnit 的不同执行顺序:/ 问题的原因是,在一种情况下,先前的测试影响了另一项测试,而在另一种情况下,不是因为不同的顺序,我希望它是相同的,但事实并非如此。