2010-06-03 6 views
6

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

बूस्ट एक अच्छी पसंद की तरह दिखता है, मुख्य रूप से क्योंकि इसे बनाए रखा जा रहा है। इसके साथ ही, मुझे एक कामकाजी और सुरुचिपूर्ण फ़ाइल-संरचना और परियोजना-संरचना को लागू करने के बारे में कैसे जाना चाहिए? मैं विन XP में वीएस 2005 का उपयोग कर रहा हूं। मैं इसके बारे में गुमराह कर रहा हूं और प्रबुद्ध से ज्यादा उलझन में था।

उत्तर

2

हमारे बूस्ट आधारित परीक्षण संरचना इस तरह दिखता है: जोड़ सकते हैं और कैसे करने के लिए करने के लिए

ProjectRoot/ 
    Library1/ 
    lib1.vcproj 
    lib1.cpp 
    classX.cpp 
    ... 
    Library2/ 
    lib2.vcproj 
    lib2.cpp 
    toolB.cpp 
    classY.cpp 
    ... 
    MainExecutable/ 
    main.cpp 
    toolA.cpp 
    toolB.cpp 
    classZ.cpp 
    ... 
    Tests/ 
    unittests.sln 
    ut_lib1/ 
     ut_lib1.vcproj (referencing the lib1 project) 
     ut_lib1.cpp (with BOOST_AUTO_TEST_CASE) - testing public interface of lib1 
     ut_classX.cpp - testing of a class or other entity might be split 
         into a separate test file for size reasons or if the entity 
         is not part of the public interface of the library 
     ... 
    ut_lib2/ 
     ut_lib2.vcproj (referencing the lib2 project) 
     ut_lib2.cpp (with BOOST_AUTO_TEST_CASE) - testing public interface of lib2 
     ... 
    ut_toolA/ 
     ut_toolA.vcproj (referencing the toolA.cpp file) 
     ut_toolA.cpp - testing functions of toolA 
    ut_toolB/ 
     ut_toolB.vcproj (referencing the toolB.cpp file) 
     ut_toolB.cpp - testing functions of toolB 
    ut_main/ 
     ut_main.vcproj (referencing all required cpp files from the main project) 
     ut_classZ.cpp - testing classZ 
     ... 

यह संरचना एक विरासत परियोजना है, जहां हम क्या परीक्षण पर एक मामला-दर-मामला आधार पर तय करने के लिए किया था के लिए चुना गया था स्रोत कोड के मौजूदा मॉड्यूल के लिए समूह परीक्षण परियोजनाएं।

बातें ध्यान रखें:

  • यूनिट टेस्टिंग कोड हमेशा उत्पादन कोड से अलग से संकलित किया गया है।
  • उत्पादन परियोजनाएं इकाई परीक्षण कोड का संदर्भ नहीं देती हैं।
  • यूनिट परीक्षण परियोजनाओं में स्रोत-फ़ाइलों को सीधे या केवल संदर्भ पुस्तकालय शामिल हैं, जो किसी निश्चित कोड-फ़ाइल के उपयोग को समझ में आता है।
  • यूनिट परीक्षणों को चलाने के लिए प्रत्येक ut _ * में vcproj
  • हमारे सभी उत्पादन स्वचालित रूप से यूनिट परीक्षण चलाते हैं। (हमारी बिल्ड स्क्रिप्ट में।)

हमारी असली (सी ++) दुनिया में आपको ट्रेडऑफ बीटीडब्ल्यू करना है। विरासत के मुद्दों, डेवलपर सुविधा, संकलन समय, आदि। मुझे लगता है कि हमारी परियोजना संरचना एक अच्छा व्यापार है। :-)

0

मैंने अपने कोर कोड को या तो .libs या .dlls में बिछाया और फिर मेरी बूस्ट परीक्षण परियोजनाएं इन lib/dll परियोजनाओं पर निर्भर करती हैं। तो मैं अंत हो सकता है:

ProjectRoot 
    Lib1Source 
    Lib1Tests 
    Lib2Source 
    Lib2Tests 

विकल्प एक अलग फ़ोल्डर में अपने स्रोत की दुकान है और दोनों अपने मुख्य क्षुधा परियोजना और इकाई परीक्षण परियोजना के लिए फ़ाइलें जोड़ने के लिए है, लेकिन मैं यह थोड़ा जटिल लगता है। YMMV।

+2

विकल्प बहुत त्रुटि-प्रवण है! – Wartin

+0

प्रोजेक्ट रूट निर्भरताओं के बारे में क्या? क्या ProjectRoot में ProjectRootTests है जो अन्य सभी परीक्षणों पर निर्भर करता है? – JBRWilkinson

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