c# - XUnit में संग्रह आकार को सत्यापित करने के लिए मुहावरेदार तरीका क्या है?




xunit.net (2)

Xunit अपनी अधिकांश चेतावनियों के लिए त्वरित सुधार प्रदान करता है, इसलिए आपको यह देखने में सक्षम होना चाहिए कि वह क्या सोचता है कि यह "सही" है।

आपके मामले में, यह चाहता है कि आप Assert.Single का उपयोग Assert.Single क्योंकि आप बिल्कुल एक आइटम की उम्मीद कर रहे हैं। यदि आप 412 की तरह एक मनमानी संख्या का दावा कर रहे हैं, तो यह आपको Count का उपयोग करने के बारे में चेतावनी नहीं देगा। यदि आप एक आइटम की अपेक्षा कर रहे हैं, या Empty यदि आप बिना किसी आइटम की अपेक्षा कर रहे हैं तो यह केवल Single का उपयोग करने का सुझाव देगा।

मेरे पास मेरे परीक्षण सूट में एक परीक्षण है जो कुछ इस तरह से जाता है:

[Fact]
public void VerifySomeStuff()
{
    var stuffCollection = GetSomeStuff();

    Assert.Equal(1, stuffCollection.Count());
}

यह परीक्षण मेरी अपेक्षा के अनुसार काम करता है, लेकिन जब मैं इसे चलाता हूं तो xUnit चेतावनी देता है:

चेतावनी xUnit2013: संग्रह आकार की जांच करने के लिए Assert.Equal () का उपयोग न करें।

हालाँकि, चेतावनी में कोई विकल्प नहीं सुझाया गया है, और एक Google खोज मुझे इस परीक्षण के लिए xUnit के स्रोत कोड में ले जाती है, जो इस चेतावनी को सत्यापित करता है, मुद्रित होता है।

यदि Assert.Equal() को सत्यापित करने का सही तरीका नहीं है, तो क्या है?

स्पष्ट करने के लिए: मुझे पता है कि मैं इस चेतावनी को न छोड़ने में "छल" कर सकता हूं जैसे कि चर Assert.True(stuff.Count() == 1) या इसके बजाय Assert.True(stuff.Count() == 1) उपयोग करके। उत्तरार्द्ध सिर्फ हैक्य है, और पूर्व ऐसा महसूस करता है कि अगर xUnit उदाहरण के लिए IEnumerable<T> कई पुनरावृत्तियों से बचने की कोशिश कर रहा है, तो यह जाने का गलत तरीका है (क्योंकि मुझे अलग से इसके बारे में संकलक संकेत मिलेंगे, अगर यह एक है समस्या), और xUnit को कभी भी इनपुट का मूल्यांकन एक से अधिक बार नहीं करना चाहिए (वास्तव में यह संभवत: चर निष्कर्षण की परवाह किए बिना उसी इनपुट को प्राप्त करेगा, क्योंकि C # फ़ंक्शन कॉल कैसे काम करता है)।

इसलिए, मुझे अपने आउटपुट से उस चेतावनी को हटाने में कोई दिलचस्पी नहीं है। मेरे प्रश्न का उत्तर यह भी बताता है कि क्यों उस चेतावनी को पहली बार में पुस्तकालय में शामिल किया गया है, और इसके बजाय मुझे जो भी दृष्टिकोण का उपयोग करना चाहिए वह बेहतर है।


मेरे पास एक ही मुद्दा था जब मैंने xUnit में नीचे दी गई गणना संपत्ति का उपयोग किया था।

बाद में, मैं संग्रह पर गणना () फ़ंक्शन का उपयोग करता हूं, इसने मेरा मुद्दा ठीक कर दिया।





xunit.net