Durante la scrittura di test per operazioni con float o oggetti contenenti float (come vettori o matrici), spesso voglio testare non per l'uguaglianza, ma per "quasi uguale" (la differenza può essere un po 'epsilon).ScalaTest - controlla "quasi uguale" per float e oggetti che contengono float
Quando si utilizza ScalaTest FunSuite, si scrive normalmente assert(xxx == yyy)
. Con float e likes posso scrivere assert(math.abs(xxx - yyy)<epsilon)
, ma poi non ho la bella caratteristica dello ScalaTest assert macro di essere riportato i valori confrontati come parte del messaggio di errore.
Come è possibile eseguire il test di float "quasi uguaglianza" in ScalaTest, in modo che quando il test fallisce, i valori vengono scritti come parte del messaggio di errore?
esempio di prova:
import org.scalatest.FunSuite
class FloatTest extends FunSuite {
test("Testing computations") {
import math._
assert(sin(Pi/4)==sqrt(0.5))
assert(sin(Pi)==0)
}
}
[http://stackoverflow.com/questions/27213930/scalatest-testing-equality-between-two-floating-point-arrays-with-error-margin](http://stackoverflow.com/questions/27213930/scalatest-testing-equality-between-two-floating-point-array-with-error-margin) – user2829759
Anche se questo è un duplicato e l'ho contrassegnato come tale, tuttavia in seconda lettura la domanda di destinazione è correlata, ma diversa , si tratta di doppi test che passano inaspettatamente, non di come farli passare. – Suma