2011-09-26 17 views
29

muszę porównać dwie wartości: jeden ciąg, a druga jest unosić więc przekonwertować ciąg do pływaka następnie spróbuj zadzwonić assertEquals(val1,val2) ale to nie jest upoważniony, myślę, że assertEquals nie przyjmuje float jako argumentów.JUnit twierdzenia: make twierdzenie między pływakami

Jakie jest rozwiązanie dla mnie w tym przypadku?

Odpowiedz

63

Trzeba zapewnić delta do twierdzenia o Pływaki:

Assert.assertEquals(expected, actual, delta) 

Podczas gdy delta jest maksymalna różnica (delta) między oczekiwaniami i rzeczywista, dla których oba numery są nadal uważane za równe.

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

delta-wartość 0.0f działa również, tak dla starej "==" porównuje (korzystaj z rozwagą!), Można napisać

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

zamiast

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

Podoba mi się sposób, w jaki JUnit zapewnia, że ​​naprawdę myślałeś o "delcie", która powinna wynosić tylko 0,0f w naprawdę banalnych przypadkach.

+0

Proponuję użyć 0.0f (łącznie z edycją odpowiedzi pogrubioną czcionką) nad innymi, ponieważ jest bardziej semantyczny. Nie wiedziałem o tym problemie, a 0.0f może doprowadzić mnie do zrozumienia, co jest zamierzone. W przypadku przestarzałego lub "Nie JUnit" byłoby to mniej oczywiste. – ElMesa

Powiązane problemy