2013-03-09 7 views
5

मैं जो व्यापार लॉजिक्स के भीतर नीचे कोड का उपयोग करता है कुछ नमूना sitecore अनुप्रयोगों देखा है:Sitecore - Assert.IsNotNull

Database database = Factory.GetDatabase(itemUri.DatabaseName); 
Assert.IsNotNull(database, itemUri.DatabaseName); 
return database.GetItem(attribute); 

कोई स्पष्ट कृपया सकते हैं अगर यह एक sitecore सम्मेलन है। मैंने यूनिट परीक्षण परिदृश्यों के लिए केवल आर्टर्ट का उपयोग किया है लेकिन तर्क के भीतर नहीं।

धन्यवाद।

उत्तर

5

यह एक ऐसा सम्मेलन है जिसे साइटकोर.dll में उपयोग किया जाने वाला हेविलिय देखा जा सकता है। अगर यह स्थिति पूरी नहीं होती है तो इसका अपवाद फेंकने के लिए प्रयोग किया जाता है।

उदाहरण के लिए यदि आप Assert.IsTrue को देखो, अगर शर्त पूरी नहीं कर रहा है प्रणाली खोज API मैं इस पाया से एक विधि डी-संकलन एक "InvalidOperationException"

फेंक देते हैं।

Assert.IsTrue(local_0 != null, "SearchConfiguration is missing"); 

तो अगर हम डी-संकलन IsTrue, यह हमें देता है

[AssertionMethod] 
public static void IsTrue([AssertionCondition(AssertionConditionType.IS_TRUE)] bool condition, string message) 
{ 
    if (!condition) 
    throw new InvalidOperationException(message); 
} 

अपने अन्य सवाल आप अपने आवेदन कोड में इसके उपयोग कर सकते हैं, जैसा कि आप अपने बस एक फेंकने का एक और तरीका देख सकते हैं उत्तर करने के लिए अपवाद अगर कोई शर्त पूरी नहीं हुई है।

भ्रम शब्द शब्द के उपयोग के साथ आता है, जैसा कि आपने कहा है कि पारंपरिक सी # .NET समाधान में यूनिट परीक्षणों के संदर्भ में आमतौर पर देखा जाता है। जब तक आप जानते हैं कि दृश्यों के पीछे साइटकोर जोर क्या कर रहा है, तो आप इसका उपयोग करना चाहते हैं या नहीं।

8

मुझे this article मिला जो आपके अधिकांश प्रश्नों को संबोधित करता है। कुछ महत्वपूर्ण बिंदु हैं:

  • .NET Assert साइटकोर आर्ट के समान नहीं है। कम से कम, साइटकोर आर्ट एक अच्छा सौदा अधिक verbose है।
  • विधि इनपुट जांचने के लिए आवेषण का उपयोग करने के लिए साइटकोर में सर्वोत्तम अभ्यास माना जाता है। (और आप इन Sitecore के कोड में लगातार दावा है और में कोड मिलेगा Sitecorecommunity (मैं आपको नहीं बता सकते हैं कि कैसे कष्टप्रद फील्ड रिक्त है हो सकता है।))

मुझे लगता है कि यह भी ध्यान रखें कि महत्वपूर्ण है साइटकोर ब्लॉग में मुझे लगता है कि कई उदाहरण ऐसे मामले हैं जहां वैसे भी एक अपवाद होगा। इसलिए, यदि ArgumentIsNotNull छोड़ा जाना था, उदाहरण के लिए, जिसके परिणामस्वरूप NullObjectException होगा, इसलिए एक आर्ट वास्तव में चीजों को थोड़ा सा साफ़ करता है। आपके मामले में, यदि डेटाबेस अनुपलब्ध है, तो इससे भी समस्या उत्पन्न होगी। एक आर्टर्ट इसे बनाता है ताकि त्रुटि का कारण स्पष्ट हो।

+3

'System.Diagnostics.Debug.Assert' को इंगित करने के लायक है यह सशर्त है और केवल डेब्यूग में एक आवेदन के निर्माण में आग लग जाएगी। Sitecore.Assert में ऐसा कोई प्रतिबंध नहीं है, इसलिए जब भी DEBUG और रिलीज़ बिल्ड दोनों में परीक्षण स्थिति विफल हो जाती है तो एक अवैधऑपरेशन अपवाद उठाएगा। –

+0

क्या आप स्पष्ट कर सकते हैं "आर्टर्ट चीजों को थोड़ा सा साफ करता है"। इसका मतलब है अपवाद सूजन है। अभी भी कारण नहीं दिख रहा है कि हमें इसकी आवश्यकता क्यों है। –

+0

केविन कहते हैं, आप केवल आवेषण पर भरोसा नहीं करना चाहते हैं। आवेषण उन मामलों को कवर करने के लिए है जो परीक्षण के दौरान मदद करने की संभावना है, जैसे संसाधन मौजूद नहीं है या एक मूल्य शून्य नहीं है जो नहीं होना चाहिए। आपको अभी भी उत्पादन कोड के लिए सत्यापन और अपवाद और अपवाद हैंडलिंग का उपयोग करना चाहिए क्योंकि आवेषण रिलीज निर्माण में कार्य नहीं करता है। वे परीक्षण करते समय सहायक होते हैं क्योंकि वे त्वरित रूप से जोड़ते हैं और कम प्रयास के साथ अधिक प्रतिक्रिया प्रदान कर सकते हैं। –

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