आप निश्चित रूप से सही हैं। मैं आज तक similar problem के साथ कुश्ती कर रहा था, जब तक कि मुझे आपकी पोस्ट नहीं मिली और अब मुझे यकीन है कि NUnit IsEqualTo() लगातार प्रदान किए गए बराबर ओवरराइड को कॉल नहीं करता है।
मैं लगातार कहता हूं, क्योंकि कभी-कभी ऐसा होता है। वास्तव में मेरे पास दो वर्ग हैं। दूसरा एक से लिया गया। जब मैं पहले के उदाहरणों पर Is.EqualTo() को कॉल करता हूं, तो एनयूनीट बराबर ओवरराइड कहता है, दूसरे के उदाहरणों के लिए यह नहीं करता है।
हालांकि यह बहुत ही असाधारण है, मेरे पास आगे बढ़ने की जांच करने का कोई समय नहीं है।
इसी तरह की समस्याओं या समाधान के साथ लोगों को निश्चित रूप से, इसके बारे में पोस्ट चाहिए, क्योंकि यह एक बहुत ही कष्टप्रद बात है और वास्तव में था मुझे मेरे परीक्षण की वैधता पर शक।
इस बीच मैंने निम्नलिखित एफ़र्म क्लास बनाया, जो बराबर के लिए बराबर ओवरराइड कहता है (मैंने इसे चेक किया है)। यह Is.EqualTo() के बजाय एक साधारण समानता आवेषण करने के लिए एनयूनीट का उपयोग करता है और कुछ हद तक इस तथ्य का उपचार करता है, इस तरह एनयूनीट परीक्षण विफल होने पर वस्तुओं के स्ट्रिंग प्रस्तुतियों को नहीं देता है।
तो यहाँ यह है:
using NUnit.Framework;
public static class Affirm
{
public static Affirmer That(object actual)
{
return new Affirmer(actual);
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
public class Affirmer
{
readonly object _actual;
public Affirmer(object actual)
{
_actual = actual;
}
public void IsEqualTo(object expected)
{
string failureMessage = string.Format("\nExpected: <{0}>\nBut was: <{1}>", _actual, expected);
Assert.That(_actual.Equals(expected), Is.True, failureMessage);
}
public void IsNotEqualTo(object expected)
{
string failureMessage = string.Format("\nDid not excpect: <{0}>\nBut was: <{1}>", _actual, expected);
Assert.That(_actual.Equals(expected), Is.False, failureMessage);
}
}
इस तरह यह प्रयोग करें:
Affirm.That(actualObject).IsEqualTo(expectedObject);
और
Affirm.That(actualObject).IsNotEqualTo(expectedObject);
आशा इस मदद करता है।
स्रोत
2009-10-26 20:02:32
मुझे बिल्कुल वही समस्या है। अभी के लिए मैं Assert.IsTrue (objectA.Equals (objectB)) का उपयोग कर रहा हूं; –
मुझे एक ही समस्या है और मैंने यह निर्धारित किया है कि यह काम करता है यदि मैं जिन वस्तुओं की तुलना कर रहा हूं वे * समान * संदर्भ नहीं हैं। यानी गुणों की तुलना में समानता के अलावा विभिन्न गुणों के साथ 2 ऑब्जेक्ट्स बनाएं, फिर Assert.Equals काम करता है ... यदि यह वही संदर्भ तुलना किया जा रहा है (जो निश्चित रूप से बराबर हैं) तो यह विफल हो जाता है! जैसा कि बराबर नहीं है (NUnit 2.5) – PandaWood
आप 'Assert.AreEqual (objA, objB) की तलाश में हैं; ' – DanielV