2010-02-10 3 views

उत्तर

99

stopifnot()

नहीं तुम भी इकाई परीक्षण के लिए Runit और testthat तरह संकुल में दिलचस्पी हो सकती है की जाँच करता है कि।

+0

क्या स्टॉपफ़ोनॉट() बंद होने पर रिपोर्ट किए गए त्रुटि संदेश को नियंत्रित करने का कोई तरीका है? – Nick

+10

@ निक, नहीं। वैधता परीक्षण के लिए 'stopifnot()' का उपयोग करें, यह जांचने के लिए कि वह कोड क्या कर रहा है, यह जांचने के लिए, लेकिन इनपुट परीक्षण के लिए 'if (blahdiblah) रोकें (" त्रुटि संदेश "), परीक्षण करने के लिए कि प्रोग्राम में इनपुट है वैध। केवल सामान्य उपयोग के दौरान उत्तरार्द्ध होना चाहिए। – Harlan

+4

हैडली का नया 'assertthat' पैकेज भी देखें, जो 'stopifnot' से बेहतर उत्तर देता है: https://github.com/hadley/assertthat – Harlan

11

@Nick:

अगर आप शर्त यह है कि अपने कार्यक्रम में एक त्रुटि फेंक होगा परीक्षण करने के लिए एक विवरणात्मक नाम के साथ एक समारोह लिखने आप अपने त्रुटि संदेश को नियंत्रित कर सकते हैं। यहाँ एक उदाहरण है:

Less_Than_8 = function(x) return(x < 8) 

for (i in 1:10) 
{ 
    print(i) 
    stopifnot(Less_Than_8(i)) 
} 

यह संख्या 8 के माध्यम से 1 प्रिंट होगा, तो बताने वाला संदेश

Error: Less_Than_8(i) is not TRUE 

यह अच्छा होगा अगर "i" कोष्ठक में मूल्य के साथ बदल दिया गया था मुद्रित कि परीक्षण में असफल रहा, लेकिन आप जो भुगतान करते हैं वह आपको मिलता है।

यदि आपको उससे कुछ भी प्रशंसक की आवश्यकता है, तो रनल और टेस्टथैट देखें क्योंकि हारलन ने सुझाव दिया था।

+0

आप फ़ंक्शन परिभाषा को' stopifnot() 'के अंदर भी डाल सकते हैं। – naught101

+1

naught101, नामित फ़ंक्शन में परीक्षण करने का बिंदु त्रुटि संदेश में मुद्रित परीक्षण का नाम प्राप्त करना है – Matthew

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