2010-06-28 4 views
7

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

इसके साथ मेरी समस्या यह है कि, मैंने पाया है कि अनुप्रयोग स्तर पर प्रत्येक मॉड्यूल (.c फ़ाइल), प्रोजेक्ट में अन्य सी फाइलों के साथ कसकर जोड़ा जाता है। किसी दिए गए फ़ाइल के लिए, यह 2-10 फाइलों से कहीं भी हो सकता है।

  1. मैं यूनिट परीक्षण कैसे लिखूं?
  2. इस तंग युग्मन को हटाने के लिए सबसे अच्छे/त्वरित/सबसे प्रभावी तरीके क्या हैं?
  3. इसके अलावा यूनिट परीक्षण पीसी पर चलेंगे, (32 बिट) और एम्बेडेड कोड 16-बिट प्रोसेसर के लिए है। मैं यह कैसे सुनिश्चित करूं कि पीसी को कोड पोर्ट करते समय यह ख्याल रखा जाता है?

उत्तर

4

के बारे में # 3 बनाने यकीन है कि यह पीसी के लिए पोर्टेबल है, यहाँ रणनीति मैं का उपयोग करें:

पहले, 'अहस्ताक्षरित लंबे' 'int16' के लिए एम्बेडेड कोड के माध्यम से जाना और किसी भी 'int' बदलने के लिए या या 'uint32' (या जो भी सम्मेलन आप चुनते हैं)।

लपेटें एम्बेडेड शीर्षक में अनुभाग जहाँ आप एक शर्त के अंदर प्रकार को परिभाषित:

#ifndef CORE_TYPE_DEFINITIONS 
#define CORE_TYPE_DEFINITIONS 
typedef long int16; 
/*...*/ 
#endif 

एक "PC_Types.h" फाइल जो पीसी के लिए एक ही प्रकार परिभाषित करता है बनाएँ।

#ifdef CORE_TYPE_DEFINITIONS 
#error "Core Types already defined" 
#else 
#define CORE_TYPE_DEFINITIONS 
typedef short int16; 
/*...*/ 
#endif 

पीसी परियोजना में, प्रत्येक एम्बेडेड ग फ़ाइल है, जो निम्नलिखित शामिल हैं के लिए एक आवरण बनाने के लिए:

#include "PC_Types.h" 
#include "ModuleX.c" //the file under test 

#include "TestHarness.h" //verification functions 

int TestModuleXUnit1(void) 
{ 
    /* setup */ 
    /* call Unit1(); */ 
    /* verify post-conditions */ 
    return result; 
} 

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

+0

बहुत बहुत धन्यवाद, यह मेरे लिए शुरू करने के लिए एक महान जगह है! – IntelliChick

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