2011-05-09 20 views
65

Olası Çoğalt:
JUnit: assertEquals for double values
JUnit assertEquals

Görünüşe assertEquals(double expected, double actual) kullanımdan kaldırıldı.

JUnit'in javadocs'ları şaşırtıcı bir şekilde eksiktir, geniş kullanımlarını göz önünde bulundurur. Yeni assertEquals(double expected, double actual, double epsilon)'u nasıl kullanacağımı gösterir misiniz?

+0

Yup, bir kopyası. Kapatmak için oy verdim. Hepinize teşekkürler! – LuxuryMode

+1

[Aşağıdaki soruları yanıtlayın] bölümüne bakın (http://stackoverflow.com/q/5686755/680503). – Constantiner

+1

Yea, bunun bir yinelenen olduğunu fark ettim. – LuxuryMode

cevap

113

Epsilon, "fuzz faktörünüz" dir, çünkü çiftler tam olarak eşit olmayabilir. Epsilon, ne kadar yakın olduklarını açıklamana izin verir.

Eğer 3.14159 bekliyorduk ama (yani 0,001 içerisinde olduğu), o zaman arada

double myPi = 22.0d/7.0d; //Don't use this in real life! 
assertEquals(3.14159, myPi, 0.001); 

gibi bir şey (yazmalı 3.14259 kadar 3.14059 yerden alacağını ise 22/7 3.1428 çıkar +, ve onaylama başarısız olur. Bu iyi bir şeydir.)

+0

Özel bir 'max' işlevim var; burada' NaN, 'özgün bir davranışın tersine, '' na ((NaN, 3.0) '' 3.0' 'dır. Test davalarında 'assertEquals (double, double)' istenen şeydir ve neden kullanımdan kaldırıldığını anlamıyorum. Bazen "float" veya "double" kullandığınızda bile dakik sonuçları bekleyebilirsiniz. – Notinlist