2012-12-28 42 views
9

के लिए कमरा है मेरे पास मूल्य की गणना करने के दो अलग-अलग तरीके हैं। एक बार दोनों तरीकों चलाने के लिए, मैं निम्नलिखित मिल:डीकिमल्स की तुलना कैसे करें, यह जानने के लिए कि त्रुटि

decimal a = 145.2344; 
decimal b = 145.2345; 

मैं एक इकाई परीक्षण है:

Assert.AreEqual(a,b); 

मैं एक +/- .0001 को ध्यान में सक्षम होना चाहते हैं। मैं यह नियम कैसे जोड़ सकता हूं?

+0

आप किस यूनिट परीक्षण ढांचे/असमानता पुस्तकालय का उपयोग कर रहे हैं? – nemesv

+0

एमएस 'यूनिट टेस्ट फ्रेमवर्क – RJP

उत्तर

4

सरल:

if (Math.Abs(a-b) < 0.0001m) 
    // equal 
12

NUnit's constraint model में, आप यह कर सकते हैं:

void AssertDiff(decimal a, decimal b, decimal diff = 0.0001) { 
    Assert.That(Math.Abs(a-b), Is.LessThan(diff)); 
} 

संपादित करें: एमएस यूनिट में

Assert.That(Math.Abs(a-b), Is.LessThan(0.0001M)); 

अभी तक बेहतर, यह एक समारोह बनाने टेस्ट फ्रेमवर्क, ऐसा करें:

void AssertDiff(decimal a, decimal b, decimal diff = 0.0001) { 
    Assert.IsTrue(Math.Abs(a-b) < diff); 
} 
+0

क्या सी # ?? मुझे कोई नहीं मिल रहा है। यह तरीका ... –

+1

@ माइकलब्रे यह न्यूटिट * बाध्य मॉडल * एनयूनीट 2.4 में पेश किया गया है। आप इसके बारे में [यहां] पढ़ सकते हैं (http://www.nunit.org/index.php?p=constraintModel&r=2.4.8)। – dasblinkenlight

+0

@ माइकलब्रे आह, मैंने अभी ओपी की टिप्पणी देखी, बहुत बहुत धन्यवाद! मैंने अपना जवाब संपादित किया। – dasblinkenlight