Beim Schreiben von Tests für Operationen mit Gleitkommazahlen oder Objekten, die Gleitkommazahlen enthalten (wie Vektoren oder Matrizen), möchte ich oft nicht nach Gleichheit, sondern nach "fast gleich" testen (Differenz kann ein Epsilon sein).
Bei der Verwendung von ScalaTest FunSuite schreibt man normalerweise assert(xxx == yyy)
. Mit Floats und Likes kann ich assert(math.abs(xxx - yyy)<epsilon)
schreiben, aber dann bekomme ich nicht die nette Funktion des ScalaTest Assert-Makros von die verglichenen Werte als Teil der Fehlermeldung gemeldet werden.
Wie kann ich in ScalaTest testen, ob float "fast equality" ist, so dass die Werte bei fehlgeschlagenem Test als Teil der Fehlermeldung geschrieben werden?
Testbeispiel:
%Vor% Es kann mit TolerantNumerics und mit ===
statt ==
.
Für Ihre eigenen Typen können Sie Ihre eigenen Unterklassen von Gleichheit [T] .
Tags und Links scala floating-point scalatest