Matematik yapmıyorsanız, tam kayan nokta değerlerini belirtmenin yanlış bir şey olmadığını unutmayın. Örneğin:
public interface Foo {
double getDefaultValue();
}
public class FooImpl implements Foo {
public double getDefaultValue() { return Double.MIN_VALUE; }
}
Bu durumda, gerçekten MIN_VALUE
sıfır olmadığından emin olmak istersiniz ya -MIN_VALUE
da MIN_NORMAL
veya çok küçük bir değerdir. Söyleyebilirsin
double defaultValue = new FooImpl().getDefaultValue();
assertEquals(Double.MIN_VALUE, defaultValue);
ancak bu size bir kullanımdan kaldırma uyarısı verir. Bundan kaçınmak için assertEquals(Object, Object)
bunun yerine şunları arayabilirsiniz :
// really you just need one cast because of autoboxing, but let's be clear
assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
Ve eğer gerçekten akıllı görünmek istiyorsanız:
assertEquals(
Double.doubleToLongBits(Double.MIN_VALUE),
Double.doubleToLongBits(defaultValue)
);
Ya da sadece Hamcrest'in akıcı tarzı iddialarını kullanabilirsiniz:
// equivalent to assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
assertThat(defaultValue, is(Double.MIN_VALUE));
Değeri Sen kontrol ederse gelmez bazı matematik yapmaktan geliyor olsa da, Epsilon kullanın.