JUnit 4’s floating-point overloads of assertEquals(expected, actual) always
throw an exception, and some floating-point calls to JUnit 4’s assertEquals do
not even compile.
To continue comparing floating-point numbers using Double.equals semantics,
you may be able to cast one argument to Object or use Truth’s
assertThat(actual).isEqualTo(expected) /
assertWithMessage(message).that(actual).isEqualTo(expected).
Alternatively, you can switch to tolerance-based equality testing, which changes
your code’s behavior for negative zero (in JUnit and Truth) and for infinities
and NaN (in Truth). If you want that, use JUnit’s assertEquals(expected,
actual, delta) or Truth’s isWithin(...).of(...), possibly with a tolerance of
zero.
Suppress false positives by adding the suppression annotation @SuppressWarnings("JUnit3FloatingPointComparisonWithoutDelta") to the enclosing element.