2011-11-20 10 views
12

जावा में आम तौर पर आप एक समान पैकेज पदानुक्रम के साथ दो स्रोत फ़ोल्डर्स src और test बनाएंगे।रूबी परीक्षण फ़ोल्डर संरचना को व्यवस्थित करने के लिए सबसे अच्छा अभ्यास क्या है?

रूबी में क्या आप परीक्षण के तहत कक्षा के समान फ़ोल्डर में सभी परीक्षण डालते हैं? या आप एक अलग पदानुक्रम एक अलग फ़ोल्डर में बनाते हैं? यदि हां, तो आप अपने यूनिट परीक्षणों में require पथ कैसे प्रबंधित करते हैं?

+1

@nash: यह पहली टिप्पणी है जिसे मैंने एसओ पर पढ़ा है कि मुझे कठोर पाया गया। –

+2

क्षमा करें, यह वास्तव में असभ्य था। मैं इसे समझने की कोशिश करूंगा। उदाहरण के लिए, आप यहां rspec spec फ़ोल्डर देख सकते हैं (https://github.com/rspec/rspec-core/tree/master/spec) ये लोग वास्तव में चश्मा लिखने के बारे में जानते हैं। दोबारा माफी चाहूंगा। –

उत्तर

8

पहले, प्रत्येक मणि में एक सामान्य लेआउट होता है। कोड lib में लगभग पूरी तरह से है। मूल निर्देशिका में, केवल मेटाडेटा जैसे READMEs, gemspec फ़ाइल और कुछ वैकल्पिक कॉन्फ़िगरेशन डेटा हैं। यदि आप रेल या सिनात्रा जैसे कुछ के साथ एक वेब ऐप लिखते हैं, तो उनके लेआउट मानकों का उपयोग

उन सभी प्रोजेक्ट प्रकारों में, परीक्षण समान स्थानों में पाए जा सकते हैं। आपके द्वारा उपयोग किए जाने वाले परीक्षण ढांचे के आधार पर, विभिन्न मानक हैं।

यदि आप Test::Unit का उपयोग करते हैं, तो परीक्षण test निर्देशिका में हैं। उस निर्देशिका में परीक्षण फ़ाइलों को वास्तव में व्यवस्थित करने के तरीके पर कोई वास्तविक मानक नहीं है। मैंने व्यक्तिगत रूप से परीक्षण कोड के फ़ाइल लेआउट को कम से कम आंशिक रूप से दर्पण करने के लिए उपयोगी पाया। यदि आप उदारता से मॉड्यूल/नेमस्पेस का उपयोग करते हैं, तो इसे इसे पढ़ने योग्य बनाना चाहिए।

आप RSpec का उपयोग करते हैं, परीक्षण (तब चश्मा कहा जाता है) एक spec निर्देशिका में जाने। वास्तविक परीक्षण के लेआउट के बारे में उपर्युक्त नोट यहां भी लागू होते हैं।

अंत में, यह ज्यादातर डेवलपर्स निर्णय है कि आप अपने परीक्षण कैसे स्थापित करें। चूंकि परीक्षण ऐसे क्षेत्र होते हैं जहां किसी भी व्यक्ति के पास अलग-अलग (और स्ट्रिंग) राय होती है, सफलता के लिए कोई पवित्र मार्ग नहीं है। आपको कुछ रत्नों का उपयोग करना चाहिए और वे सामान कैसे करते हैं। टेस्ट :: यूनिट लेआउट का एक उदाहरण रेल रत्नों में पाया जा सकता है, उदाहरण के लिए ActiveRecord के लिए। RSpec परीक्षणों के लिए एक उदाहरण chiliproject_backlogs चिलीप्रोजेक्ट के लिए प्लगइन है।

+0

पूरी तरह से जवाब के लिए धन्यवाद! मुझे लगता है कि अक्सर 'spec_helper' होता है जिसमें आरएसपीईसी परियोजनाओं में निर्भरता होती है। –

+0

स्पष्ट होने के लिए, आपके मणि में \ \ lib' और '\ test' निर्देशिकाएं होंगी। – ashes999

0

मैं रूबी के लिए भी नया हूं, और एक ही सवाल सोच रहा हूं। मुझे जो हिस्सा नहीं मिला वह था कि उन्हें lib निर्देशिका में घटकों के संभावित पदानुक्रमिक संगठन से मेल खाने के लिए पदानुक्रमित तरीके से व्यवस्थित करना है, और फिर उन्हें सभी को सूट के रूप में चलाएं।

मैं लंबे समय तक गुगल नहीं कर रहा हूं, लेकिन मेरे निष्कर्ष अपेक्षा से पहले पतले हैं।

# फ़ाइल::

टेस्ट मामले में जो रूबी फ़ाइलें जो अन्य परीक्षण मामलों की आवश्यकता होती है वर्गों परीक्षण स्वीट में एक साथ इकट्ठा किया जा सकता: सबसे उपयोगी बात मैंने पाया ruby wiki से है ts_allTheTests.rb
की आवश्यकता होती है 'परीक्षण/इकाई'
की आवश्यकता होती है 'testOne'
की आवश्यकता होती है 'testTwo'
की आवश्यकता होती है 'testThree'

इस तरह, संबंधित परीक्षण मामलों स्वाभाविक रूप से समूहीकृत किया जा सकता है। इसके अलावा, परीक्षण सूट में परीक्षण के पदानुक्रम के निर्माण की इजाजत देकर अन्य परीक्षण सूट शामिल हो सकते हैं।

इससे पहले, मैं अपने परीक्षण निर्देशिका में उपनिर्देशिका से बचने और मेरी Rakefile में कुछ इस तरह करते थे, या किसी गहरे लाल रंग का फ़ाइल है कि वास्तव में परीक्षण निष्पादित करता है:

$LOAD_PATH << File.dirname(__FILE__) 
require 'test/unit' 
Dir.glob('test/test_*', &method(:require)) 

तो अगर मैं दो तकनीकों गठबंधन , मेरे पास प्रत्येक निर्देशिका के लिए एक फ़ाइल होगी जो गतिशील रूप से उस निर्देशिका से परीक्षण की आवश्यकता होती है, जो बदले में मूल निर्देशिका के लिए फ़ाइल द्वारा आवश्यक होगी। लेकिन यह टेडियम से बचने के लिए मेरे मूल प्रयास को हराने के लिए प्रतीत होता है।

फिर मुझे someclassesruby-doc में मिला जो प्रासंगिक लेकिन कम-दस्तावेज सुनाई गई। हालांकि, ऐसा लगता है कि Test::Unit के लिए ऊपर की ओर अधिक जानकारी उपलब्ध है जिसे मैं आसानी से याद कर सकता था। मैंने इसे अभी तक नहीं पढ़ा है, लेकिन यह आशाजनक लग रहा है।

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

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