इतने सारे assertEquals()
या इसी तरह के फ़ंक्शन अपेक्षित मान को पहले पैरामीटर के रूप में क्यों लेते हैं और वास्तविक एक दूसरे के रूप में क्यों लेते हैं?
यह मेरे लिए प्रतिद्वंद्वी लगता है, तो क्या इस असामान्य आदेश के लिए कोई विशेष कारण है?ऑर्डर (अनुमानित, वास्तविक) में assertEquals() पैरामीटर क्यों हैं?
उत्तर
क्योंकि लेखकों के पास आपके अंतर्ज्ञान से मेल खाने का 50% मौका था।
अन्य अधिभार
assertWhatever(explanation, expected, actual)
और स्पष्टीकरण है, जो तुम क्या जानते का हिस्सा है, उम्मीद है, जो है कि तुम क्या जानते हैं, के रूप में वास्तविक करने का विरोध किया है, जो तुम नहीं के साथ चला जाता क्योंकि जब आप कोड लिखते हैं तो जानें।
हालांकि, उस मामले में, यह थोड़ा असंगत हो जाता है क्योंकि अधिकांश भाषाओं में, आवश्यक पैरामीटर पहले दिखाई देते हैं, और अनिवार्य लोग आखिरी होते हैं। यही कारण है कि मैं अधिक स्वाभाविक रूप से पर जोर देता हूं जो भी (वास्तविक, अपेक्षित [, स्पष्टीकरण]) – jor
क्षमा करें, मेरा मतलब था _optional_ अंतिम दिखाई देते हैं, अनिवार्य नहीं है ... – jor
बिल्कुल, जोर! इसके अलावा, अगर ("ए" == एस) की बजाय (एस == "ए") लिखने के लिए सशर्त में यह अधिक आम है (हालांकि यह बहस करने योग्य है कि यह दूसरे तरीके से बेहतर होगा - पहले सामान्यता के मामले में हालांकि एक जीतता है)। – benroth
xUnit परीक्षण सम्मेलन की उम्मीद/वास्तविक है। इसलिए, उन लोगों के लिए जो प्राकृतिक आदेश हैं क्योंकि उन्होंने यही सीखा है।
दिलचस्प रूप से एक xUnit ढांचे के लिए सम्मेलन से ब्रेक में कुनिट वास्तविक/अपेक्षित के लिए जाता है। कम से कम जावास्क्रिप्ट के साथ आप सिर्फ एक नया कार्य है कि पुराने एक समाहित बना सकते हैं और यह मूल चर निर्दिष्ट कर सकते हैं:
var qunitEquals = equals;
equals = function(expected, actual, message) {
qunitEquals(actual, expected, message);
};
मैं आम सहमति है कि स्थिरता # 1 है के साथ सहमत हैं, लेकिन की तुलना शब्दकोशों के व्यवहार हो सकता है एक यदि आप इस प्रश्न का मूल्यांकन कर रहे हैं तो उपयोगी डेटापॉइंट।
जब मुझे एक diff पर "+" दिखाई देता है, तो मैंने इसे "प्रक्रिया की जांच की गई प्रक्रिया" के रूप में पढ़ा। फिर, व्यक्तिगत प्राथमिकताएं लागू होती हैं।
नोट: मैंने वर्णमाला कुंजी का उपयोग किया और शब्दकोश को अब तक बनाया ताकि उदाहरण की स्पष्टता के लिए केवल एक मध्यम कुंजी बदल जाएगी। अन्य परिदृश्य अधिक obfuscated diffs प्रदर्शित करते हैं। इसके अलावा उल्लेखनीय,> = 2.7 में assertEqual uses assertDictEqual और> = 3.1
exl.py
from unittest import TestCase
class DictionaryTest(TestCase):
def test_assert_order(self):
self.assertEqual(
{
'a_first_key': 'value',
'key_number_2': 'value',
'z_last_key': 'value',
'first_not_second': 'value',
},
{
'a_first_key': 'value',
'key_number_2': 'value',
'z_last_key': 'value',
'second_not_first': 'value',
}
)
आउटपुट:
$ python -m unittest exl
F
======================================================================
FAIL: test_assert_order (exl.DictionaryTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "exl.py", line 18, in test_assert_order
'second_not_first': 'value',
AssertionError: {'a_first_key': 'value', 'z_last_key': 'value', 'key_number_2': 'value', 'first_ [truncated]... != {'a_first_key': 'value', 'z_last_key': 'value', 'key_number_2': 'value', 'second [truncated]...
{'a_first_key': 'value',
- 'first_not_second': 'value',
'key_number_2': 'value',
+ 'second_not_first': 'value',
'z_last_key': 'value'}
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (failures=1)
- 1. JUnit assertEquals (डबल की उम्मीद, डबल वास्तविक, डबल एप्सिलॉन)
- 2. रजिस्टर क्लाइंटस्क्रिप्ट ब्लॉक पैरामीटर वास्तविक परिदृश्यों में उपयोग करते हैं?
- 3. assertEquals दूसरे पैरामीटर कास्टिंग के बिना काम नहीं करता है
- 4. पॉइंटर पैरामीटर क्यों हैं?
- 5. क्या मोंगो डीबी अनुमानित हैं?
- 6. जावा assertEquals सेट
- 7. लेवल ऑर्डर ट्रैवर्सल का वास्तविक जीवन उपयोग
- 8. OleDbCommand पैरामीटर ऑर्डर और प्राथमिकता
- 9. तत्व ऑर्डर बदलते हैं?
- 10. वास्तविक ऑब्जेक्ट पैरामीटर का वास्तविक प्रकार प्राप्त करें
- 11. इस मामले में वास्तविक विडियो और वास्तविक हाइट 0.0 क्यों हैं?
- 12. जावा: assertEquals (स्ट्रिंग, स्ट्रिंग) भरोसेमंद है?
- 13. डेटाबेस में अनुमानित खोज
- 14. एकाधिक पैरामीटर क्लोजर तर्क प्रकार अनुमानित नहीं है
- 15. पायथन की कतार qsize() में अनुमानित आकार क्यों लौटाती है?
- 16. `atan2`" पीछे की ओर पैरामीटर क्यों हैं?
- 17. टाइप आकार_टी के फ़ंक्शन पैरामीटर क्यों हैं?
- 18. वीएस -2008 - अनुमानित प्रकार
- 19. एक अनुमानित
- 20. क्यों CLOCKS_PER_SEC प्रति सेकंड घड़ियों की वास्तविक संख्या क्यों है?
- 21. क्यों 3 और एक्स (जिसे 3 असाइन किया गया था) में हास्केल में अलग-अलग अनुमानित प्रकार क्यों हैं?
- 22. एक अनुमानित
- 23. जर्सी संसाधन में वास्तविक पैरामीटर मान प्राप्त करना FilterFactory
- 24. jQuery स्रोत में इन दो पैरामीटर क्यों हैं?
- 25. इंटरफ़ेस परिभाषा में पैरामीटर नाम क्यों आवश्यक हैं? मैं कार्यान्वयन
- 26. PHP में विनाशक अनुमानित है?
- 27. assertEquals() में regexp का उपयोग नहीं करता है
- 28. क्या वेबसाईट संदेश ऑर्डर-ऑर्डर कर सकते हैं?
- 29. अनुमानित स्ट्रिंग मिलान एल्गोरिदम
- 30. msodb में MySQL ऑर्डर findOne()
यही कारण है कि मैं आम तौर पर इस तरह के assertThat रूप matchers, (वास्तविक उपयोग करते हुए अंत में, (अपेक्षित) है) मुझे – JonathanC
पढ़ने के लिए इतना आसान लगता है क्या आप वाकई आदेश है? दस्तावेज़ 'assertEqual' के लिए मानक इंगित नहीं करते हैं https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertEqual और उस पृष्ठ को ब्राउज़ करने से पता चलता है कि ऑर्डर अनजान मॉड्यूल के भीतर असंगत है । लेकिन इस पायथन मुद्दे का अर्थ है (वास्तविक, अपेक्षित) वास्तव में मानक है: http://bugs.python.org/issue10573 –
इसके अलावा, ध्यान दें कि 'assertEquals' को बहिष्कृत किया गया है-' assertEqual' का उपयोग करें (भले ही कम से कम 2.7 में, यह वास्तव में इंगित नहीं करता कि कौन सा पैरामीटर अपेक्षित है और कौन सा वास्तविक है) –