Notez que si vous ne faites pas de maths, il n'y a rien de mal à affirmer des valeurs en virgule flottante exactes. Par exemple:
public interface Foo {
double getDefaultValue();
}
public class FooImpl implements Foo {
public double getDefaultValue() { return Double.MIN_VALUE; }
}
Dans ce cas, vous voulez vous assurer que c'est vraiment MIN_VALUE
, pas zéro ou -MIN_VALUE
ou MIN_NORMAL
ou une autre très petite valeur. Tu peux dire
double defaultValue = new FooImpl().getDefaultValue();
assertEquals(Double.MIN_VALUE, defaultValue);
mais cela vous donnera un avertissement de dépréciation. Pour éviter cela, vous pouvez appeler à la assertEquals(Object, Object)
place:
assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
Et, si vous voulez vraiment avoir l'air intelligent:
assertEquals(
Double.doubleToLongBits(Double.MIN_VALUE),
Double.doubleToLongBits(defaultValue)
);
Ou vous pouvez simplement utiliser des assertions de style Hamcrest couramment:
assertThat(defaultValue, is(Double.MIN_VALUE));
Si la valeur que vous vérifiez ne venez de faire un peu de maths, bien que, utilisez le epsilon.