我有从文件加载属性的程序。当代码中配置文件中不存在该属性时,我将该属性设置为默认值。
在JUnit测试中,我正在测试如果未设置属性,则该值为默认值。
我的属性是一些阈值(以毫秒为单位),该阈值以字符串形式显示,然后转换为double和seconds。默认值为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进行了尝试,并且在mvn中都通过了,我使用了Java 1.7.0_71,并且在与以下比较时失败了:
expected:<0> but was:<1>
注意:如果两个数相等,则Double.compare返回0。 https://www.tutorialspoint.com/java/lang/double_compare.htm 如果d1等于d2,则此方法返回值0;否则,返回0。如果d1在数值上小于d2,则该值小于0;如果d1在数值上大于d2,则该值大于0。
答案 0 :(得分:0)
问题不是double的比较,而是控制台maven和eclipse中JUnit执行的不同顺序:/ 问题的原因是,在一种情况下,先前的测试影响了另一种测试,而在另一种情况下,则不是因为我期望相同的顺序,但事实并非如此。