JUnit 4 要比較兩個double值可使用assertEquals(double expected, double actual, double delta)
。
原本的assertEquals(double expected, double actual)
因為double有精度上誤差的問題所以已經deprecated了。
第一個參數double expected
為預期的值或結果。
第二個參數double actual
為實際的值,用來和第一個參數進行比對。
第三個參數double delta
為允許的誤差值,如果參數一和參數二之間的差異範圍在誤差值內(不含誤差值),則參數一和參數二仍視為相同。
請見下面範例。
public class Test {
public Test(){}
@Test
public void testDouble_1() {
double expected = 3083.60;
double actual = 3083.60;
double delta = 0.001;
assertEquals(expected, actual, delta); // pass
}
@Test
public void testDouble_2() {
double expected = 3083.60;
double actual = 3083.6001;
double delta = 0.001;
assertEquals(expected, actual, delta); // pass
}
@Test
public void testDouble_3() {
double expected = 3083.60;
double actual = 3083.601;
double delta = 0.001;
assertEquals(expected, actual, delta); // fail
}
}
在上面範例的testDouble_2()
中的差異(0.0001)小於delta=0.001,所以仍通過測試;
而testDouble_3()
的差異(0.001)不小於delta=0.001,所以沒有通過測試。
數學中Delta通常以三角形符號∆
表示,代表兩數之間的差異或變動,例如ΔT = T2 - T1
。
如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。
參考:
沒有留言:
張貼留言