2017-02-13 4 views
8

प्रसंगXUnit वर्णनात्मक संदेश संदेश को कैसे कार्यान्वित करें?

XUnit GitHub में मैंने पाया इस: Add Assert.Equal(expected, actual, message) overload #350(ताकि एक डेवलपर एक गैर मौजूदा अधिभार के लिए पूछने के नीचे देखें) जवाब से

उद्धरण:

हम एक हैं आत्म-दस्तावेज कोड में आस्तिक; जिसमें आपके दावे शामिल हैं।

(इसलिए XUnit टीम यह खारिज कर दिया)

ठीक है, मैं समझ गया। मैं स्वयं दस्तावेज़ कोड पर भी विश्वास करता हूं। फिर भी मैं बाहर उपयोग के इस मामले नहीं मिल सकता है:

नमूना

// Arrange 
// Create some external soap service client and its wrapper classes 

// Act 
// client.SomeMethod(); 

// Assert 
// Sorry, soap service's interface, behaviour and design is *given* 
// So I have to check if there is no Error, and 
// conveniently if there is, then I would like to see it in the assertion message 

Assert.Equal(0, client.ErrorMessage.Length); // Means no error 

// I would like to have the same result what would be the following *N*U*n*i*t* assert: 
// Assert.AreEqual(0, client.ErrorMessage.Length, client.ErrorMessage); // Means no error 

प्रश्न

मैं XUnit में इस मामले जो अभी भी कोई ऐसी है में एक वर्णनात्मक ज़ोर संदेश को लागू कर सकते हैं कैसे एक अधिभार?

+0

मुझे इस बात पर अस्पष्ट नहीं है कि समस्या क्या है। आप केवल 'Assert.AreEqual (0, client.ErrorMessage.Length, client.ErrorMessage) का उपयोग क्यों नहीं कर रहे हैं, जैसा कि आपने टिप्पणी में बताया था? – Kritner

+0

XUnit में ऐसा कोई अधिभार नहीं है। यह एक एनआईएनआईटी कॉल है। कृपया शुरुआती वाक्य देखें: एक डेवलपर ऐसे अधिभार के लिए पूछता है, और XUnit टीम उद्धृत की वजह से अस्वीकार करती है "हम स्वयं-दस्तावेज कोड में आस्तिक हैं; इसमें आपके दावे शामिल हैं" –

+0

@ g.pickardou, सुझावों का उपयोग क्यों न करें लिंक पर प्रदान किया गया। धाराप्रवाह दावे की तरह या अपना खुद का दावा बनाएं जो 'Assert.True या Assert.False' को लपेटता है जो उनके संदेश ओवरलोड के साथ छोड़ा गया था। इसका उल्लेख नीचे दिया गया था 'आप संदेश देने के लिए संदेश प्रदान कर सकते हैं। सही और गलत।यदि आप बस संदेशों के बिना नहीं रह सकते हैं (और एक अलग दावे का उपयोग करने से इनकार करते हैं), तो आप हमेशा वापस आ सकते हैं: Assert.True (संख्या == 2, "यह मेरा संदेश है"); ' – Nkosi

उत्तर

6

लिंक पर दिए गए सुझावों का उपयोग करें। fluent assertions की तरह या अपना खुद का दावा बनाएं जो Assert.True or Assert.False को लपेटता है जो उनके संदेश अधिभार के साथ छोड़ा गया था। यह आगे नीचे

Quote

आप Assert.True और .False को संदेश प्रदान कर सकते हैं उल्लेख किया गया था। आप बस संदेशों बिना नहीं रह सकते हैं (और एक अलग दावे का उपयोग करने के लिए मना कर दिया), तो आप हमेशा के लिए वापस गिर सकती है:

Assert.True(number == 2, "This is my message"); 

Quote:

तुम सच में संदेश रखना चाहते हैं, तो आप आपकी परीक्षण परियोजनाओं में Fluent Assertions या शायद xbehave जोड़ सकते हैं और उनके वाक्यविन्यास का उपयोग कर सकते हैं। Fluent Assertions xunit.net अपवाद भी फेंकता है अगर यह इसकी उपस्थिति का सामना करता है।

+0

यह एक उत्तर है, हालांकि मुझे अभी भी आपकी टिप्पणी में संदर्भित फ्लेंट नमूना नहीं मिला है/प्राप्त नहीं हुआ है –

+0

इसमें समय लगता है, लेकिन अंततः मुझे यह मिला। (यह ज़िलियंस यूनिट टेस्ट फ्रेमवर्क है जिसे मुझे चुनना है और तुरंत काम करना है ...) –

+0

फ़्लुएंट दावे लेने के लिए बहुत आसान है। मैं इसे बहुत उपयोग करता हूं और सीखने की अवस्था खड़ी नहीं थी। – Nkosi

संबंधित मुद्दे