में दो-तरफा सूची तुलना मेरे सी # यूनिट परीक्षणों में, मैं अक्सर आईडी की सूची के आधार पर पंक्तियों की एक सूची के लिए पूछताछ करता हूं। मैं फिर यह सुनिश्चित करना चाहता हूं कि 1) सभी आईडी के लिए, कम से कम एक पंक्ति मिली जिसमें उस आईडी और 2) सभी लौटे पंक्तियों के लिए, प्रत्येक पंक्ति में एक आईडी है जो खोजने के लिए आईडी की सूची में है। यहाँ कैसे मैं आमतौर पर है कि यह सुनिश्चित है:सी # यूनिट परीक्षण
मुझे लगता है कि Any
और All
के उपयोग इस तरह की जांच के लिए सुविधाजनक है, लेकिन मैं अगर कोई सोचता है कि यह कम पठनीय की तुलना में यह हो सकता है, या अगर कोई है देखना चाहता था शायद इस तरह दो तरह के चेक करने का एक अच्छा तरीका है। मैं यूनिट परीक्षण के लिए विजुअल स्टूडियो 2008 टीम सिस्टम में एमएसटीएस्ट का उपयोग कर रहा हूं। यदि यह बहुत ही व्यक्तिपरक है तो यह शायद समुदाय विकी होना चाहिए।
संपादित करें: मैं अब एक समाधान Aviad पी के सुझाव के आधार पर, और यह भी सच है कि निम्न परीक्षण में सफ़ल उपयोग कर रहा हूँ: IMO
string[] ids1 = { "a", "b", "c" };
string[] ids2 = { "b", "c", "d", "e" };
string[] ids3 = { "c", "a", "b" };
Assert.AreEqual(
1,
ids1.Except(ids2).Count()
);
Assert.AreEqual(
2,
ids2.Except(ids1).Count()
);
Assert.AreEqual(
0,
ids1.Except(ids3).Count()
);
यह अच्छा लग रहा है, और मुझे पसंद है कि मैं केवल एक बार 'x [primaryKey]' लिखूंगा। हालांकि, मुझे लगता है कि यह 'बहिष्कार' वर्णित करने पर विचार करते हुए 'गणना() == 0' होना चाहिए। –
असल में, आपको> 0 रखने की आवश्यकता है, लेकिन संदेशों को चारों ओर स्वैप करें। मेरा जवाब संशोधित किया। –
आपको '> 0' की आवश्यकता क्यों होगी? मुझे उम्मीद है कि परिणाम आईडी की सूची और आईडी की सूची के बीच कोई अंतर नहीं होगा। इंटेलिसेंस "दो अनुक्रमों के सेट अंतर" के उत्पादन के रूप में 'छोड़कर' का वर्णन करता है। –