Beachten Sie, dass es nichts Falsches ist, wenn Sie keine genauen Gleitkommawerte angeben, wenn Sie nicht rechnen. Zum Beispiel:
public interface Foo {
double getDefaultValue();
}
public class FooImpl implements Foo {
public double getDefaultValue() { return Double.MIN_VALUE; }
}
In diesem Fall wollen Sie sicherstellen , es ist wirklich MIN_VALUE
nicht Null oder -MIN_VALUE
oder MIN_NORMAL
oder ein anderer sehr kleiner Wert. Sie können sagen
double defaultValue = new FooImpl().getDefaultValue();
assertEquals(Double.MIN_VALUE, defaultValue);
Dies führt jedoch zu einer Abwertungswarnung. Um dies zu vermeiden, können Sie assertEquals(Object, Object)
stattdessen anrufen :
// really you just need one cast because of autoboxing, but let's be clear
assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
Und wenn Sie wirklich schlau aussehen wollen:
assertEquals(
Double.doubleToLongBits(Double.MIN_VALUE),
Double.doubleToLongBits(defaultValue)
);
Oder Sie können einfach Behauptungen im fließenden Stil von Hamcrest verwenden:
// equivalent to assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
assertThat(defaultValue, is(Double.MIN_VALUE));
Wenn der Wert, den Sie überprüfen, jedoch aus Berechnungen stammt, verwenden Sie das Epsilon.