Perhatikan bahwa jika Anda tidak melakukan matematika, tidak ada yang salah dengan menyatakan nilai floating point yang tepat. Misalnya:
public interface Foo {
double getDefaultValue();
}
public class FooImpl implements Foo {
public double getDefaultValue() { return Double.MIN_VALUE; }
}
Dalam hal ini, Anda ingin memastikan itu benar-benar MIN_VALUE
, bukan nol atau -MIN_VALUE
atau MIN_NORMAL
atau nilai yang sangat kecil lainnya. Bisa dibilang begitu
double defaultValue = new FooImpl().getDefaultValue();
assertEquals(Double.MIN_VALUE, defaultValue);
tetapi ini akan memberi Anda peringatan penghentian. Untuk menghindarinya, Anda bisa menelepon assertEquals(Object, Object)
:
// really you just need one cast because of autoboxing, but let's be clear
assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
Dan, jika Anda benar-benar ingin terlihat pintar:
assertEquals(
Double.doubleToLongBits(Double.MIN_VALUE),
Double.doubleToLongBits(defaultValue)
);
Atau Anda bisa menggunakan pernyataan gaya lancar Hamcrest:
// equivalent to assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
assertThat(defaultValue, is(Double.MIN_VALUE));
Jika nilai Anda memeriksa sedang tidak datang dari melakukan beberapa matematika, meskipun, menggunakan epsilon tersebut.