2011-09-26 58 views
29

我需要比較兩個值之間的斷言:一個字符串,另一個是浮動 所以我轉換爲浮動然後嘗試撥打assertEquals(val1,val2)繩子,但這個沒有被授權,我猜測,assertEquals不接受float作爲參數。JUnit斷言:使花車

在這種情況下,我的解決方案是什麼?

回答

63

你必須爲浮動提供了一個三角洲斷言:

Assert.assertEquals(expected, actual, delta) 

雖然Δ在最大差值(DELTA)預期與實際針對這兩個數字仍然被認爲是相等的。

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true 
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false 
5

0.0F的增量值也適用,因此對於老式的 「==」 比較(謹慎使用!),你可以寫

Assert.assertEquals(expected, actual, 0.0f); 

,而不是

Assert.assertEquals(expected, actual); // Deprecated 
Assert.assertTrue(expected == actual); // Not JUnit 

我喜歡JUnit確保您真正考慮「delta」的方式,它在真正微不足道的情況下應該只有0.0f。

+0

我建議使用0.0f(包括帶粗體文本的答案編輯)而不是其他語言,因爲它更具語義。我不知道這個問題,0.0f可能導致我理解什麼是打算。以不贊成的或「不是JUnit」的方式,它就不太明顯。 – ElMesa