2010-08-25 7 views
12

मैं
assertTrue("User logged in", user.isLoggedIn());
या
assertTrue("User is not logged in", user.isLoggedIn());
जुनीट सम्मिलन विधियों को सकारात्मक या नकारात्मक में phrased किया जाना चाहिए? <br /> :

पूर्व स्रोत फ़ाइलों के अंदर बेहतर पढ़ने प्रदान करता है लेखन किया जाना चाहिए "मैं जोर है कि निम्न सत्य है:। उपयोगकर्ता में लॉग इन किया" "। त्रुटि है कि उपयोगकर्ता के प्रवेश"
java.lang.AssertionError: User logged in

"जोर देते हुए कि उपयोगकर्ता के प्रवेश में कोई त्रुटि है":

त्रुटि संदेश दोनों तरीकों से पढ़ा जा सकता है

JUnit प्रलेखन, यह होना चाहिए जो करने के लिए एक स्पष्ट मार्गदर्शन प्रदान नहीं करता है को छोड़कर यह
है "के लिए की पहचान संदेश {AssertionError @link}",
और दोनों ही मामलों में, पाठ की पहचान करता है परीक्षण किया जा रहा है चलाते हैं।

आम उपयोग क्या है?

उत्तर

9

के बारे में कैसे:

assertTrue("User should be logged in", user.isLoggedIn()); 

वर्क्स दोनों तरीकों से।

+0

मुझे यह पसंद है, कम लेकिन बिंदु पर। – Steve

2

ठीक है, आप अपनी धारणा भी बता सकते हैं, और फिर धारणा कैसे नहीं थी। इस तरह:

assertTrue("Expected user to be logged it, and wasn't", user.isLoggedIn()); 

स्पष्ट संदेश के लिए बनाता है, लेकिन टाइप करने और पढ़ने के लिए लंबा है।

+1

+1, यह यथासंभव स्पष्ट होने के लायक है - जब एक विफलता कई सैकड़ों परीक्षणों के बीच में आती है तो आप जितना संभव हो उतना संदर्भ चाहते हैं ताकि आप अपने सिर को – Brian

+0

के कारण में प्राप्त कर सकें। यह नकारात्मक रूप है , फिर। – Fletch

+0

@jjnguy मैं असहमत हूं। संदर्भ को जानकर "बिल्कुल" मतलब यह हो सकता है कि आप पूर्ण ओएस मेमोरी (थोड़ी अधिक overexaggerating) के प्रिंटआउट डंप होगा। मुद्दा केवल प्रासंगिक जानकारी प्रदान करना है। और सकारात्मक दावा ग्रंथ सिर्फ इस उद्देश्य के लिए हैं। –

-1

आपको दोनों मामलों को शामिल करना चाहिए। जब आप अपने दावे को त्रिकोणीय करते हैं तो आपके पास बेहतर परीक्षण केस होता है।

1

उस प्रश्न से बचने के लिए, मैं "निम्न-स्तर" assert * विधियों के बजाय assertThat का उपयोग करने के लिए अधिक से अधिक उपयोग करता हूं। वास्तव में, this article की तरह, बताते हैं कि विफलता के मामले में आपको एक बहुत ही स्पष्ट त्रुटि संदेश देगा।

0

आप इस्तेमाल कर सकते हैं:

assertTrue("Test if user is logged in", user.isLoggedIn()); 

जब आप ऐसा करते हैं, तो आप पुष्टि कर रहे हैं कि user.isLoggedIn() सच है, तुम सच में यह नहीं कह सकते कि उपयोगकर्ता नहीं में लॉग इन या है, तो आप अभी तक पता नहीं है, आप बस इसका परीक्षण कर रहे हैं।

0

दिलचस्प है, मैं का प्रयोग करेंगे:

assertTrue("user should be logged in", user.isLoggedIn()); 

जो मुझसे कहता है क्या उम्मीद है इस दावे की स्थिति।

मुझे लगता है कि सबसे अच्छा विकल्प वह है जिसे आप समझते हैं।

3

सख्ती से अपना पहला उदाहरण की तरह

उपयोग सकारात्मक ज़ोर पाठ अपने ज़ोर संदेशों में सकारात्मक, या की तरह हो:

assertTrue("User is logged in", user.isLoggedIn()); 

कारण हैं:

  • सकारात्मक जोर कम
  • है
  • एक ऐसी ज़िम्मेदार स्थिति है जिसे आप जांच रहे हैं, और कई संभावित कारणों से, यह गलत क्यों हुआ। कारण का पता लगाने का प्रयास न करें, बस राज्य, क्या दावा विफल रहा है।
  • यह आपके कोड में अधिक पठनीय है। आमतौर पर सकारात्मक अभिव्यक्तियों में कोड करने की अनुशंसा की जाती है, जो पाठक
  • के दिमाग में स्थितियों की कुछ अस्वीकृति को बचाता है, यह अभी भी त्रुटि निशान में पठनीय है, जिसे सामान्य उपयोगकर्ता द्वारा समझा नहीं जाना चाहिए, लेकिन प्रोग्रामर द्वारा, वैसे भी कोड में खत्म हो जाएगा। और यहां तक ​​कि sysadmin, जो कोड तक पहुंच नहीं पाएगा, पूरी त्रुटि संदेश के साथ लेखक प्रदान करेगा और प्रोग्रामर समझ जाएगा, यह एक जोर से आता है।

संदेश में "सभी प्रासंगिक जानकारी" प्रदान करने का प्रयास स्थिति में सुधार नहीं कर रहा है, बल्कि यह सूचना गड़बड़ी बनाता है।

आप जानते हैं, अच्छे प्रोग्रामर एक कोड डीबग करते हैं और कामकाजी और छोटे कोड प्रदान करते हैं।

इस दिशा में करने के लिए पहली बात के रूप में सकारात्मक जोर संदेश का उपयोग करें।

दूसरी दिशा - अधिक से अधिक अनावश्यक सामान वाले कोड को पैच करना प्रोग्रामिंग नरक के लिए रास्ता तय करना है।

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