के साथ यूनिट परीक्षण अपवाद संदेश मैं वर्तमान में अपने एमएसटेस्ट यूनिट परीक्षणों को xUnit में परिवर्तित कर रहा हूं। XUnit के साथ, अपवाद संदेशों का परीक्षण करने का कोई तरीका है? क्या अपवाद संदेशों का परीक्षण करना सही है क्योंकि अपवाद प्रकार का विरोध किया गया है?xUnit
xUnit
उत्तर
मुझे लगता है कि यह दोनों अपवाद प्रकार और संदेश के लिए परीक्षण करने के लिए सही है किया जाएगा। और दोनों XUnit में आसान कर रहे हैं:
var exception = Assert.Throws<AuthenticationException>(() => DoSomething());
Assert.Equal(message, exception.Message);
एक अपवाद अपने परीक्षण के किसी भी अन्य अपेक्षित परिणाम से अलग नहीं है। यह जांचना स्वाभाविक है कि संदेश सही है क्योंकि दो अलग-अलग संदेश एक ही अपवाद प्रकार में आ सकते हैं। हालांकि - मैं व्यक्तिगत रूप से इसे अनिवार्य रूप से नहीं सोचता, कम से कम सभी अपवादों में नहीं।
हमारी परियोजना प्रत्येक आवेदन अपवाद भी एक 'संदेश' वस्तु इसे से जुड़ी होती है, तो हम MessageId को सत्यापित केवल, हमें इसकी पुष्टि नहीं है कि संदेश तर्क सही हैं या संदेश के पाठ। उदा। यदि संदेश पाठ "गलत पैरामीटर < {0}> प्रदान किया गया था", हम यह नहीं देखते हैं कि प्रारूप {0} पर पारित तर्क अपेक्षित है - यह इरादा नहीं है। संदेश में एक अद्वितीय आईडी है - इसलिए हम सत्यापित करते हैं कि अपवाद पर MessageID 'WRONG_PARAMETER_PROVIDED' है।
XUnit Assert.Throws का उपयोग करता अपवाद प्रकार के लिए परीक्षण करने के लिए। यदि आपको आवश्यकता हो तो आप संदेश के खिलाफ अपवाद और जोर दे सकते हैं। मुझे लगता है कि आम तौर पर आप परीक्षण करना चाहते हैं कि अपेक्षित अपवाद फेंक दिया गया है, और सटीक संदेश वास्तव में आवश्यक नहीं है।
Assert.Throws<ArgumentNullException>()
अपवाद हो सकता है यदि आपके पास कस्टम अपवाद है तो आप इकाई परीक्षण कर रहे हैं और आप यह सुनिश्चित करना चाहते हैं कि उत्पन्न संदेश आपको अपेक्षित है। या अगर कोई दो तरीके है कि एक ही अपवाद प्रकार फेंक दिया जा सकता है लेकिन अलग-अलग संदेश के साथ है, तो संदेश के खिलाफ जोर देते हुए मूल्यवान
'थ्रो()' रिटर्न अपवाद - इसे पकड़ने की कोई आवश्यकता नहीं है। –
XUnit वेबसाइट भी कहा गया है "Record.Exception" का निर्माण।
बेहतर रूप में यह एएए नमूने का मिलान Record.Exception विधि का उपयोग करने के लिए:
[Fact]
public void Divide_TwoNumbers_ExpectException()
{
var sut = new Calculator();
var exception = Record.Exception(() => sut.Divide(10, 0));
Assert.IsType(typeof(DivideByZeroException), exception);
}
आशा इस मदद करता है ...
कुछ इस
var ex = Record.Exception(() => DoSomeThing());
Assert.IsType(typeof(ArgumentNullException), ex);
Assert.True(ex.Message.Contains("Your exception message"));
BTW की तरह, Resharper पसंद टाइपफ का उपयोग न करें और इसके बजाय Assert.IsType सुझाता है, उदाहरण के लिए
var ex = Record.Exception(() => new FooController(null, null));
Assert.IsType<ArgumentNullException>(ex);
- 1. xUnit
- 2. ओपनवर + xunit
- 3. App.config XUnit
- 4. xUnit ढांचे: XUnit में NUnit के [TestFixtureSetUp] के समतुल्य?
- 5. मानक XUnit रिपोर्ट XML
- 6. xUnit, SubSpec और FakeItEasy
- 7. xUnit ढांचे का उपयोग कर प्रदर्शन परीक्षण
- 8. क्या विजुअल स्टूडियो 2010 टेस्ट रनर XUnit चला सकता है?
- 9. जेएसयूनीट बनाम क्यूनीट बनाम XUnit बनाम यूनिट परीक्षण जावास्क्रिप्ट/JQuery
- 10. NUnit SetUpFixture विशेषता xUnit में बराबर विशेषता है?
- 11. ऑब्जेक्ट्स की समानता की जांच के लिए XUnit Assertion
- 12. क्यों xunit पैरामीटर के साथ एक विधि परीक्षण की अनुमति नहीं है?
- 13. xUnit और Moq async का समर्थन नहीं करते हैं - कीवर्ड का इंतजार करें
- 14. xUnit .net के Assert में कार्य द्वारा फेंक दिया अपवादों को कैसे संभालें। <T>?
- 15. मैं XUnit कंसोल के साथ NUnit स्वरूपित xml आउटपुट कैसे करूं?
- 16. जेनकींस XUnit साथ QTestlib का परिणाम दिखा रहा है प्लग में
- 17. विजुअल स्टूडियो 2012 में पाठ एक्सप्लोरर में टेस्ट क्लास नाम को सी # और xUnit
- 18. xUnit या NUnit? एक दूसरे के फायदे और नुकसान क्या हैं?
- 19. TestDriven.net
- 20. MSBuild के साथ एक XML फ़ाइल कैसे बनाएं?
- 21. क्या PowerShell स्क्रिप्ट के साथ PowerShell का परीक्षण करने के लिए एक इकाई परीक्षण ढांचा है?
- 22. एसवीएन बाहरी ... हाँ या नहीं?
- 23. पाइथन
- 24. xUnit.net में, क्या क्रम में परीक्षण चलाने के लिए संभव है?
- 25. rspec चेक को संदेश कैसे संलग्न करें?
- 26. F #
- 27. Asp.Net 4.0 कैशइटेम पॉलिसी स्लाइडिंग समाप्ति गलत है?
- 28. आर
- 29. ओरेकल पीएल/एसक्यूएल के लिए यूनिट परीक्षण फ्रेमवर्क?
- 30. xUnit.net
जोर देता है। तीर <> async विधियों के साथ अच्छी तरह से काम का निर्माण? –
@CsabaToth नहीं आपको Assert.ThrowsAsync <> यह करने के लिए – jfmg
मुझे यकीन है कि मुझे स्पष्ट याद आ रही है, लेकिन पहली पंक्ति में 'संदेश' तर्क क्या है? –