2008-10-21 16 views
9

मेरे सवाल का इकाई परीक्षण जोड़ा जा रहा है something asked before के लिए काफी प्रासंगिक है, लेकिन मैं कुछ व्यावहारिक सलाह की जरूरत है।मौजूदा प्रोजेक्ट

मेरे पास "हाथों में विरासत कोड के साथ प्रभावी ढंग से काम करना" है और मैं पुस्तक से सलाह का उपयोग कर रहा हूं जैसा कि मैंने इसे प्रोजेक्ट में पढ़ा है। परियोजना एक सी ++ अनुप्रयोग है कि कुछ पुस्तकालयों के होते हैं लेकिन कोड का बड़ा हिस्सा एक भी निष्पादन करने के लिए संकलित किया गया है है। जब मैं कुछ छूना चाहता हूं तो मैं मौजूदा कोड में यूनिट परीक्षण जोड़ने के लिए googletest का उपयोग कर रहा हूं।

मेरी समस्या यह है कि मैं अपनी बिल्ड प्रक्रिया कैसे स्थापित कर सकता हूं ताकि मैं अपने यूनिट परीक्षणों का निर्माण कर सकूं क्योंकि दो अलग-अलग निष्पादन योग्य हैं जिन्हें कोड साझा करने की आवश्यकता है, जबकि मैं अपने "परीक्षण के तहत" एप्लिकेशन से कोड निकालने में सक्षम नहीं हूं पुस्तकालय। अभी मैं अनुप्रयोग है कि इकाई परीक्षण मुख्य आवेदन के निर्माण प्रक्रिया से उत्पन्न वस्तु फ़ाइलों के खिलाफ लिंक, लेकिन मैं वास्तव में यह पसंद नहीं रखती है के लिए अपने निर्माण की प्रक्रिया बना दिया है। क्या कोई सुझाव है?

उत्तर

1

पर एक एकल डेवलपर के रूप में करते हैं, अपने परीक्षण एप्लिकेशन केवल वस्तु को जोड़ने है, तो यह तो आप को प्रभावी ढंग से पहले से ही एक पुस्तकालय के रूप में उन्हें इलाज कर रहे हैं परीक्षण करने के लिए की जरूरत है फ़ाइलें, यह मुख्य और परीक्षण ऐप के लिए एक अलग पुस्तकालय में समूह के लिए संभव उन वस्तु फ़ाइलों होना चाहिए। यदि आप नहीं कर सकते तो मैं नहीं देखता कि आप जो कर रहे हैं वह एक विकल्प है।

यदि आपको अन्य ऑब्जेक्ट फ़ाइलों को परीक्षण के तहत लिंक नहीं करना है तो यह उन निर्भरताओं का संकेत है जिन्हें टूटा जाना आवश्यक है, जिसके लिए आपके पास सही पुस्तक है। हमारे पास समान समस्याएं हैं और एक प्रणाली का उपयोग करें जैसे कि Vlion

2

Working Effectively With Legacy Code पुराने कोड का परीक्षण शुरू करने के लिए सबसे अच्छा संसाधन है। वास्तव में कोई अल्पकालिक समाधान नहीं है जिसके परिणामस्वरूप चीजें बदतर हो जाएंगी।

0

मैं व्यक्तिगत रूप से ऐसा करना जारी रखूंगा जैसा कि आप कर रहे हैं या बिल्ड स्क्रिप्ट रखने पर विचार करते हैं जो एक ही समय में लक्षित एप्लिकेशन और इकाई परीक्षण करता है (दो परिणामस्वरूप उसी कोडबेस से बाइनरी)। हां यह बदसूरत गंध करता है लेकिन यह बहुत व्यावहारिक है।

आप के लिए कुडोस और अपने परीक्षण के साथ अच्छी किस्मत।

0

मैं परीक्षण प्रति एक परीक्षण निष्पादन पसंद करते हैं। यह लिंक-टाइम सीम को सक्षम बनाता है और टीडीडी को अनुमति देता है क्योंकि आप एक इकाई पर काम कर सकते हैं और अपने शेष कोड के बारे में चिंता नहीं कर सकते हैं।

मैं पुस्तकालयों को सभी परीक्षणों पर निर्भर करता हूं। उम्मीद है कि इसका मतलब है कि आपके परीक्षण केवल तब चलते हैं जब कोड वास्तव में बदलता है।

यदि आपको विफलता मिलती है तो परीक्षण सही जगह पर निर्माण प्रक्रिया को बाधित करेंगे।

+0

क्यों नीचे वोट? –

2

मैं एक makefile संरचना आप उपयोग कर सकते स्केच होगी:

all: tests executables 

run-tests: tests 
    <commands to run the test suite> 

executables: <file list> 
    <commands to build the files> 

tests: unit-test1 unit-test2 etc 

unit-test1: ,files that are required for your unit-test1> 
    <commands to build unit-test1> 

है कि मोटे तौर पर क्या मैं अपने प्रोजेक्ट

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