2010-06-30 17 views
40

कक्षा:नामकरण परंपरा JUnit प्रत्यय या उपसर्ग टेस्ट परीक्षण MyClass.java JUnit परीक्षण का मामला नाम विकल्प के तहत

TestMyClass.java 
MyClassTest.java 

http://moreunit.sourceforge.net "टेस्ट" उपसर्ग डिफ़ॉल्ट के रूप में उपयोग करने के लिए लगता है, लेकिन मैं दोनों का उपयोग करता है देखा है। ग्रहण में इकाई परीक्षण के रूप में पूरी परियोजना को चलाने के दौरान दोनों को पहचाना जाने लगता है क्योंकि यह @ टेस्ट के लिए पार्स किए गए वर्गों के अंदर एनोटेशन है। मुझे लगता है कि मैवेन एक ही काम करता है।

कौन सा पसंदीदा है?

उत्तर

72

प्रत्यय के लिए एक और तर्क देख पा रहे हैं - कम से कम अंग्रेजी भाषा में:

एक वर्ग का प्रतिनिधित्व करता है आमतौर पर संज्ञा, यह एक अवधारणा का एक मॉडल है। आपके परीक्षणों में से एक का एक उदाहरण 'माइक्लास परीक्षण' होगा। इसके विपरीत, एक विधि 'परीक्षण []] गणना [विधि]' जैसी किसी प्रकार की कार्रवाई का मॉडल करेगी।

क्योंकि इस की, मैं हमेशा परीक्षण कक्षाओं के लिए 'प्रत्यय' और उपसर्ग परीक्षण तरीकों के लिए उपयोग करेंगे:

the MyClass test   --> MyClassTest 
test the calculate method --> testCalculate() 
+0

डिज़ाइन बिंदु दृश्य से यह कैसे किया गया था जो मैं ढूंढ रहा था। – aron

46

मैं प्रत्यय का उपयोग करना पसंद करता हूं - इसका मतलब है कि निर्देशिका में फ़ाइलों की सूची को देखना आसान है: आपको कुछ अर्थपूर्ण प्राप्त करने के लिए पहले चार अक्षरों को मानसिक रूप से अनदेखा करने की आवश्यकता नहीं है। (मुझे लगता है कि आपके पास पहले से ही उत्पादन कोड में एक अलग निर्देशिका में परीक्षण हैं।)

इसका यह भी अर्थ है कि जब आप एक्लिप्स में ओपन टाइप (Ctrl-T) का उपयोग करते हैं, तो आप उत्पादन कोड दोनों को देखकर समाप्त होते हैं और एक ही समय में इसके परीक्षण ... जो भी एक चेतावनी है अगर आप नहीं एक परीक्षण वर्ग :)

6

JUnit 4 से पहले यह अपने परीक्षण कक्षाओं SomethingTest नाम के लिए और फिर से चलाने के आम था *Test.java से मेल खाने वाली सभी कक्षाओं में जुनीट। इन दिनों एनोटेशन ने जुनीट 4 संचालित किया है, आपको बस अपने परीक्षण विधियों को @Test के साथ एनोटेट करने की आवश्यकता है और इसके साथ किया जाना चाहिए। आपकी परीक्षा कक्षाएं शायद आपके वास्तविक स्रोत (src/ में test/ में परीक्षण कक्षाओं) की तुलना में एक अलग निर्देशिका संरचना के तहत होने जा रही हैं, इसलिए इन दिनों उपसर्ग/प्रत्यय काफी हद तक अप्रासंगिक हैं।

+9

वे नहीं हैं। मान लें कि हमारे पास एक कनेक्टर के लिए एक मॉडल है और इस वर्ग को कनेक्टर उदाहरण का परीक्षण करने के लिए परीक्षण के मॉडल के मुकाबले 'कनेक्टर' नाम दिया गया है, जो 'कनेक्टरटेस्ट' होगा। मेरे लिए यह बहुत स्पष्ट है। आप एक शुद्ध तकनीकी परिप्रेक्ष्य से सही हैं लेकिन नामकरण डिजाइन से संबंधित होना चाहिए। –

+1

इतिहास जानने के लिए प्रबुद्ध। +1 – aron

+0

@Andreas_D, यह सच है। आम तौर पर एक यूनिट टेस्ट क्लास एक जावा क्लास का परीक्षण करने पर केंद्रित होगी, इसलिए 'कनेक्टर' के लिए यूनिट परीक्षण 'कनेक्टरटेस्ट' में होंगे, इसलिए मेरे उत्तर की पिछली बार, उपसर्ग/प्रत्यय में अभी भी कुछ मूल्य है। – krock

4

किसी को भी दंडित नहीं करना, लेकिन मुझे लगता है कि यह कहना उचित है कि "अधिकुनिट" जुनीट की तुलना में बहुत कम ज्ञात है, जो काफी सर्वव्यापी है, और प्रत्यय परीक्षण कक्षाओं "टेस्ट" के सम्मेलन की स्थापना की है।

हालांकि जुनीट 4 ने कक्षा और विधि नामकरण सम्मेलनों (resp। "पोस्टफिक्स टेस्ट" और "उपसर्ग परीक्षण") दोनों का पालन करने की आवश्यकता को दूर किया, मुझे लगता है कि दोनों स्पष्टता के लिए अभी भी उपयोगी हैं।

() src/परीक्षण/जावा /.../ MyClass.myMethod होने के आतंक से src/मुख्य/जावा /.../ MyClass.myMethod() का परीक्षण किया कल्पना कीजिए ...

कभी कभी, यह JUnit3 सम्मेलनों से अलग होने के लिए उपयोगी है - मुझे लगता है कि वे क्या करते हैं ("createTestFactory()") के बाद नामकरण सेटअप विधियों को ढूंढते हैं और उन्हें "@Before" जेनेरिक "setUp()" से कहीं अधिक स्पष्ट है।

यह विशेष रूप से उपयोगी होता है जब कई असंबंधित सेटअप कार्यों को करने की आवश्यकता होती है - वे अलग-अलग तरीकों से हो सकते हैं, प्रत्येक टैग @ इससे पहले। यह कार्यों की स्वतंत्रता को बहुत अच्छी तरह से संवाद करता है।

+2

बीडीडी (http://blog.dannorth.net/introducing-bdd) से एक अच्छा विचार: परीक्षण विधियों का नामकरण करने के बजाय "@ टेस्ट testFailOnNull() {...}", क्रिया का प्रयोग करें "चाहिए": "@Test mustFailOnNull() {...} "। मुझे लगता है कि यह संक्षेप में बहुत सारी जानकारी बताता है। यह "परीक्षण" को दोहराने से बचाता है, और "@Test failOnNull() {...}" से बेहतर पढ़ता है। –

1

जब भी मैं अपने परीक्षण को कई वर्गों में विभाजित करना चाहता हूं तो मैं MyClassTest_XXX का भी उपयोग करता हूं।यह एक बड़ी कक्षा का परीक्षण करते समय उपयोगी होता है और मैं परीक्षणों को तार्किक रूप से समूहीकृत करना चाहता हूं। (विरासत कोड को नियंत्रित नहीं कर सकता है इसलिए यह परिदृश्य आ गया है।) तो मेरे पास रसोई सिंकटेस्ट_फोरएरे, किचसिंकटेस्ट_फोरकोलेक्शन, आदि जैसे कुछ हैं

-1

मैं प्रत्यय पसंद करता हूं: टेस्टकेस। यह इसके साथ संगत है: http://xunitpatterns.com/Testcase%20Class.html

+0

महोदय, आप शब्दावली के बारे में उलझन में लग रहे हैं ... – GabrielOshiro

3

मैं TestClassName वाक्यविन्यास का उपयोग करना पसंद करता हूं। अन्य वाक्यविन्यास का उपयोग करते समय मुझे यह पहचानने में परेशानी है कि परीक्षण कौन सा है और जब मैं दोनों खुले हैं तो संपादकों में वास्तविक वर्ग कौन सा है। नाम में पिछले चार अक्षरों को देखने के लिए थकाऊ है और ये पत्र हमेशा प्रदर्शित नहीं होते हैं।

मेरे लिए अन्य वाक्यविन्यास हर दिन फ़ाइलों के बीच कई गलत स्वैपिंग की ओर जाता है और यह समय लेने वाला है।

2

मुझे लगता है कि यदि आप अकेले काम कर रहे हैं तो आप अपने परीक्षणों के साथ सहज महसूस करते हैं। लेकिन अगर आप एक समूह में हैं, तो आप बेहतर बैठकर कुछ तय कर लेंगे। मैं व्यक्तिगत रूप से विधियों के लिए कक्षाओं और उपसर्ग के लिए प्रत्यय का उपयोग करता हूं और अपने समूह को इस सम्मेलन में अनुकूलित करने का प्रयास करता हूं।

0

मैं MyClassTests का सुझाव देता हूं।

कक्षाएं संज्ञा वाक्यांश होना चाहिए, इसलिए आमतौर पर MyClassTest और कम आम MyClassTests या MyClassTestCase या MyClassTestFixture सभी कामों का उपयोग किया जाना चाहिए। तकनीकी रूप से, जुनीट टेस्ट क्लास का एक उदाहरण test fixture का प्रतिनिधित्व करता है, लेकिन TestFixture मेरे लिए थोड़ा सा वर्बोज़ है।

मुझे लगता है कि MyClassTests सर्वोत्तम तरीके से इरादा व्यक्त करता है क्योंकि आमतौर पर प्रत्येक परीक्षा में एक परीक्षण (टेस्ट केस) का प्रतिनिधित्व करने वाले वर्ग में कई परीक्षण विधियां होती हैं।

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