दिलचस्प पोस्ट
टाइप स्क्रिप्ट के साथ अंगुलर 2 में एचटीआई डेटा से चैनिंग आरएक्सजेएस ऑब्जेर्वबल्स php फाइल को किसी अन्य सर्वर से PHP सहित अजगर xlwt – मौजूदा सेल सामग्री को एक्सेस करना, कॉलम की चौड़ाई को स्वत: समायोजित करें एंड्रॉइड: चेकबॉक्स श्रोता अमेज़ॅन एस 3 बिटो – एक फ़ोल्डर कैसे बनाएं? कैसे फेसबुक, जीमेल वास्तविक समय अधिसूचना भेजता है? `Im2col` और` col2im` के कुशल कार्यान्वयन एक नंबर पर 'दशमलव चिह्न' हजारों विभाजक जोड़ें इकट्ठा और कई गतिशील HTML इनपुटों के सबमिट किए गए मूल्यों को वापस सर्वलेट में सहेजें यदि सेल में '@' सम्मिलित नहीं है, तो पूरे पंक्ति को हटाने का कुशल तरीका कैसे mongoDB में संग्रह रिकॉर्ड के अंदर सरणी को सॉर्ट करने के लिए एचटीएमएल तिथिपिक्कर से कुछ तिथियों को अक्षम करें पता लगा रहा है कि कोई ब्राउज़र पूर्ण स्क्रीन मोड में है मैं पोर्ट्रेट और लैंडस्केप ओरिएंटेशन के लिए अलग-अलग लेआउट कैसे निर्दिष्ट करूं? "के रूप में?", "जैसा!", और "के रूप में" क्या अंतर है?

यूनिट परीक्षण सी कोड

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

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

वेब के समाधान से एकत्रित समाधान "यूनिट परीक्षण सी कोड"

सी में एक इकाई परीक्षण ढांचा चेक है ; सी में इकाई परीक्षण चौखटे की एक सूची यहां पाई जा सकती है और नीचे दी गई है। आपके रनटाइम में कितने मानक लाइब्रेरी कार्य करता है इसके आधार पर, आप इनमें से किसी एक का उपयोग करने में सक्षम नहीं हैं या नहीं।

AceUnit

AceUnit (उन्नत सी और एंबेडेड यूनिट) एक आरामदायक सी कोड इकाई परीक्षण ढांचे के रूप में खुद को बिल। यह ज्युनिट 4.x को मिमिक करने का प्रयास करता है और इसमें प्रतिबिंब जैसी क्षमताओं भी शामिल हैं। एसेउनेट का उपयोग संसाधन बाधा वातावरण में किया जा सकता है, जैसे एम्बेडेड सॉफ़्टवेयर विकास, और महत्वपूर्ण रूप से यह वातावरण में ठीक चलता है जहां आप एक एकल मानक हेडर फ़ाइल को शामिल नहीं कर सकते और एएनएसआई / आईएसओ सी पुस्तकालयों से एक मानक सी फ़ंक्शन को नहीं ला सकते हैं। इसमें विंडोज पोर्ट भी है यह संकेतों को फँसाने के लिए कांटे का उपयोग नहीं करता है, हालांकि लेखकों ने ऐसी सुविधा को जोड़ने में रुचि व्यक्त की है। AceUnit होमपेज देखें।

जीएनयू आटोनेट

चेक के रूप में उसी लाइन के साथ, जिसमें एक अलग पता स्थान पर यूनिट टेस्ट चलाने के लिए फोर्किंग भी शामिल है (वास्तव में, चेक के मूल लेखक जीएनयू ऑटोनैट के विचार को उधार लेते हैं) GNU Autounit व्यापक रूप से GLib का उपयोग करता है, जिसका अर्थ है कि लिंक करना और इस तरह विशेष विकल्प की आवश्यकता होती है, लेकिन यह आपके लिए एक बड़ी समस्या नहीं हो सकती है, खासकर यदि आप पहले ही GTK या GLib का उपयोग कर रहे हैं GNU Autounit होमपेज देखें।

Cunit

इसके अलावा जीएलआईबी का उपयोग करता है, लेकिन यूनिट परीक्षणों के पते की जगह को संरक्षित करने के लिए काटा नहीं जाता है।

Cunit

मानक सी, एक Win32 जीयूआई कार्यान्वयन के लिए योजना के साथ। वर्तमान में इकाई परीक्षणों के पता स्थान को फोर्क या अन्यथा सुरक्षित नहीं करता है। प्रारंभिक विकास में CUnit मुखपृष्ठ देखें

सबसे प्यारे

सिर्फ एक। सी और एक .h फ़ाइल के साथ एक सरल ढांचे है जो आप अपने स्रोत पेड़ में छोड़ देते हैं क्यूटेस्ट होमपेज देखें।

CppUnit

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

embUnit

एंबुनेट (एंबेडेड यूनिट) एम्बेडेड सिस्टम के लिए एक अन्य यूनिट टेस्ट फ्रेमवर्क है। ऐसा लगता है कि एसीयूनिट द्वारा इसे हटा दिया गया है एंबेडेड यूनिट होमपेज ।

MinUnit

मैक्रोज़ का एक न्यूनतम सेट और यही है! मुद्दा यह दिखाना है कि कितना आसान यह है कि इकाई आपके कोड का परीक्षण करे। मिनयूनेट होमपेज देखें।

श्री एंडो के लिए CUnit

एक CUnit कार्यान्वयन जो काफी नया है, और जाहिरा तौर पर अभी भी शुरुआती विकास में है। श्री एंडो होमपेज के लिए CUnit देखें।

यह सूची मार्च 2008 में आखिरी बार अपडेट हुई थी।

अन्य:

CMocka

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

मापदंड

मानदंड एक क्रॉस-प्लेटफॉर्म सी यूनिट टेस्टिंग फ्रेमवर्क है, जो कि स्वचालित परीक्षण पंजीकरण, पैरामीटिज्ड टेस्ट, सिद्धांतों का समर्थन करता है, और जो कि टीएपी और जेयूनेट एक्सएमएल सहित कई प्रारूपों में उत्पादन कर सकता है। प्रत्येक परीक्षण अपनी प्रक्रिया में चलाया जाता है, इसलिए संकेत और क्रैश की रिपोर्ट की जा सकती है या यदि आवश्यक हो तो परीक्षण किया जा सकता है। अधिक जानकारी के लिए मानदंड मुखपृष्ठ देखें।

HWUT

एचडब्ल्यूटी सी के लिए महान समर्थन वाला एक सामान्य यूनिट टेस्ट उपकरण है। इसे मेकफाइल बनाने में मदद मिल सकती है, न्यूनतम 'पुनरावर्ती तालिकाओं' में बड़े पैमाने पर परीक्षण के मामलों को तैयार किया जा सकता है, राज्य मशीनों के साथ चलना, सी-स्टब उत्पन्न करने और अधिक। सामान्य दृष्टिकोण बहुत विशिष्ट है: Verdicts 'अच्छा stdout / bad stdout' पर आधारित हैं तुलना फ़ंक्शन, हालांकि, लचीला है। इस प्रकार, जाँच के लिए किसी भी प्रकार की स्क्रिप्ट का उपयोग किया जा सकता है यह किसी भी भाषा पर लागू हो सकता है जो मानक आउटपुट उत्पन्न कर सकता है। HWUT होमपेज देखें।

निजी तौर पर मुझे Google टेस्ट फ्रेमवर्क पसंद है

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

यह वही है जो लोग " तेज़ " के बारे में बात करते हैं सी में आपका एकमात्र विकल्प वास्तव में पूर्व-प्रोसेसर या लिंकर का उपयोग करने के लिए अपनी निर्भरता को बाहर नकली है।

मेरी सी परियोजनाओं में से एक में एक विशिष्ट परीक्षण सूट इस तरह दिख सकती है:

#include "myimplementationfile.c" #include <gtest/gtest.h> // Mock out external dependency on mylogger.o void Logger_log(...){} TEST(FactorialTest, Zero) { EXPECT_EQ(1, Factorial(0)); } 

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

कोड को क्रॉस-कंपाइल करने के लिए, काम करने के लिए आपको लक्ष्य पर अच्छी सुविधाएं चाहिए। मैंने यह एक PowerPC आर्किटेक्चर पर लिनक्स के लिए संकलित googletest cross के साथ किया है। यह समझ में आता है क्योंकि आपके पास अपने परिणामों को इकट्ठा करने के लिए एक पूर्ण खोल और ओएस है कम समृद्ध परिवेशों के लिए (जो मैं पूर्ण ओएस के बिना कुछ भी वर्गीकृत करता हूं) आपको बस मेजबान के निर्माण और चलाने चाहिए। आपको ऐसा करना चाहिए ताकि आप बिल्ड के भाग के रूप में स्वचालित रूप से परीक्षण चला सकें।

मैं सी ++ कोड का परीक्षण आमतौर पर बहुत आसान है इस तथ्य के कारण है कि ओओ कोड प्रक्रियात्मक की तुलना में काफी कम युग्मित है (अर्थात यह कोडिंग शैली पर काफी निर्भर करता है)। इसके अलावा सी ++ में आप निर्भरता इंजेक्शन और विधि को सीधा में कोड प्राप्त करने के लिए ओवरराइड जैसी चाल का उपयोग कर सकते हैं जो अन्यथा एनक्यूप्लेटेड है।

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

संपादित करें : मैंने यूनिट परीक्षण प्रक्रियात्मक कोड के बारे में एक ब्लॉग पोस्ट लिखा है, जिसमें GitHub पर स्रोत उपलब्ध है ।

संपादित करें : व्यावहारिक प्रोग्रामर्स से बाहर आने वाली एक नई पुस्तक है जो विशेष रूप से इकाई परीक्षण सी कोड को संबोधित करती है जिसे मैं अत्यधिक सलाह देता हूं ।

Minunit एक अविश्वसनीय रूप से सरल इकाई परीक्षण रूपरेखा है मैं इसे एयूआर के लिए यूनिट टेस्ट सी माइक्रोकंट्रोलर कोड का उपयोग कर रहा हूं।

मैं वर्तमान में CuTest इकाई परीक्षण ढांचे का उपयोग कर रहा हूं:

http://cutest.sourceforge.net/

यह एम्बेडेड सिस्टम के लिए आदर्श है क्योंकि यह बहुत हल्के और सरल है मुझे यह लक्ष्य प्लेटफॉर्म पर और साथ ही डेस्कटॉप पर काम करने में कोई समस्या नहीं थी। यूनिट परीक्षणों को लिखने के अलावा, यह आवश्यक है:

  • एक हेडर फाइल शामिल है, जहां आप क्वेटास्ट रूटीन कॉल कर रहे हैं
  • छवि में संकलित / लिंक करने के लिए एक अतिरिक्त 'सी' फ़ाइल
  • कुछ साधारण कोड को मुख्य सेट अप करने के लिए जोड़ा गया और यूनिट परीक्षणों को कॉल किया गया – मेरे पास यह एक विशेष मुख्य फ़ंक्शन है जो संकलित हो जाता है यदि UNITTEST को बिल्ड के दौरान परिभाषित किया गया है।

सिस्टम को ढेर और कुछ stdio कार्यक्षमता (जो सभी एम्बेडेड सिस्टम नहीं है) का समर्थन करने की आवश्यकता है। लेकिन यह कोड बहुत आसान है कि आप शायद उन आवश्यकताओं के विकल्प में काम कर सकते हैं, यदि आपके प्लेटफ़ॉर्म में उन्हें नहीं है।

Extern "C" {} ब्लॉक के कुछ विवेकपूर्ण उपयोग के साथ यह C ++ का ठीक समर्थन करता है।

मैं लगभग यही कहता हूं कि चूंकि यह इकाई चूहाकॉक है लेकिन यदि आपके पास यूनिट परीक्षणों में एक एम्बेडेड मोड़ है तो …

यूनिटी – यूनिट परीक्षण सी कोड के लिए अत्यधिक अनुशंसित ढांचा

एम्बेडेड सी के लिए इस थ्रेड टीडीडी में उल्लेखित किताब में दिए गए उदाहरण यूनिटी (और सीपीटीईटीईटी) के माध्यम से लिखे गए हैं।

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

एक उदाहरण:

 #include <tap.h> int main () { plan(5); ok(3 == 3); is("fnord", "eek", "two different strings not that way?"); ok(3 <= 8732, "%d <= %d", 3, 8732); like("fnord", "f(yes|no)r*[af]$"); cmp_ok(3, ">=", 10); done_testing(); } 

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

इसमें विभिन्न संदेश आउटपुट स्वरूपों जैसे सबुनीट, टेस्ट जेनरेट प्रोटोकॉल और जेयूनेट एक्सएमएल रिपोर्ट्स भी हैं।

एम्बेडेड प्लेटफ़ॉर्म पर काम करने के लिए सेमीकोआ भी बनाया गया है और इसमें Windows समर्थन भी है

एक साधारण परीक्षण इस तरह दिखता है:

 #include <stdarg.h> #include <stddef.h> #include <setjmp.h> #include <cmocka.h> /* A test case that does nothing and succeeds. */ static void null_test_success(void **state) { (void) state; /* unused */ } int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(null_test_success), }; return cmocka_run_group_tests(tests, NULL, NULL); } 

एपीआई पूरी तरह से प्रलेखित है और कई उदाहरण स्रोत कोड का हिस्सा हैं।

सीमकैक के साथ आरंभ करने के लिए आपको एलडब्ल्यूएन.नेट पर लेख पढ़ना चाहिए: सी में मॉक ऑब्जेक्ट के साथ इकाई परीक्षण

सेमीकैक 1.0 फरवरी 2015 को जारी किया गया है।

कामों को नकली करने के लिए एक मार्ग की तलाश शुरू करने से पहले मैंने एक विरासत सी एप्लिकेशन का परीक्षण नहीं किया। मुझे सी फाइल को अलग करने के लिए बुरी तरह से नकल की जरूरत थी, जिसे मैं दूसरों से परीक्षण करना चाहता हूं मैंने सीमॉक को एक कोशिश दी और मुझे लगता है कि मैं इसे अपनाएगा।

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

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

टेस्ट में सामान्य परीक्षण ए (), टेस्ट बी () कार्य शामिल होते हैं जिसमें आप अपेक्षाओं का निर्माण करते हैं, परीक्षण करने के लिए कॉल फ़ंक्शन और जांच करें।

अंतिम चरण एकता के साथ अपने परीक्षणों के लिए एक धावक बनाने के लिए है कमॉक एकता परीक्षण ढांचे से जुड़ा हुआ है। यूनिटी किसी भी अन्य यूनिट परीक्षण ढांचे के रूप में सीखना आसान है।

अच्छी तरह से एक कोशिश और समझने में काफी आसान है:

http://sourceforge.net/apps/trac/cmock/wiki

अपडेट 1

मैं जांच रहा हूं एक और ढांचा सीमककरी ​​है

http://code.google.com/p/cmockery/

यह एक शुद्ध सी फ्रेमवर्क का समर्थन इकाई परीक्षण और मजाक है। इसकी रूबी पर कोई निर्भरता नहीं है (सीमक के विपरीत) और बाहरी लिब्स पर इसकी बहुत कम निर्भरता है।

इसे सेटअप करने के लिए थोड़ा अधिक मैनुअल काम की आवश्यकता है क्योंकि यह कोई कोड पीढ़ी नहीं करता है यह एक मौजूदा परियोजना के लिए बहुत सारे काम का प्रतिनिधित्व नहीं करता है क्योंकि प्रोटोटाइप ज्यादा नहीं बदलेगा: एक बार जब आप अपना मुखअसल करते हैं, तो आपको उन्हें कुछ समय के लिए बदलने की आवश्यकता नहीं होगी (यह मेरा मामला है)। अतिरिक्त टाइपिंग मोजे का पूर्ण नियंत्रण प्रदान करता है। यदि आप कुछ पसंद नहीं करते हैं, तो आप बस अपना मजाक बदल सकते हैं।

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

इसके अलावा इसमें कुछ निफ्टी सी ट्रिक हैं जो मुझे नहीं पता था।

कुल मिलाकर शॉर्टकट को शुरू करने के लिए कुछ और चीजों की आवश्यकता है। उदाहरणों से आपको इस पर काबू पाने में मदद करनी चाहिए। ऐसा लगता है कि यह आसान यांत्रिकी के साथ नौकरी कर सकता है

एक सी नौसिखिया के रूप में, मैंने पाया कि स्लाइड्स को टेस्ट से संचालित विकास सी में बहुत मददगार है। असल में, यह किसी भी बाहरी निर्भरता के बिना, एक संदेश देने के लिए स्टैंडर्ड assert() का उपयोग करता है; अगर किसी को पूर्ण स्टैक परीक्षण ढांचे के लिए उपयोग किया जाता है, तो यह संभवतः नहीं करेगा 🙂

CUnit है

एंबेडेड यूनिट एंबेडेड सी सिस्टम के लिए इकाई परीक्षण ढांचे है। इसकी डिजाइन की नकल JUnit और CUnit और अधिक से, और फिर एंबेडेड सी सिस्टम के लिए कुछ हद तक अनुकूलित किया गया था। एंबेडेड यूनिट को std सी लिब्स की आवश्यकता नहीं है। सभी ऑब्जेक्ट को कॉन्स्ट एरिया के लिए आवंटित किया जाता है।

और टेसी एम्बेडेड सॉफ़्टवेयर के इकाई परीक्षण को स्वचालित करता है

माइकल फेदर की पुस्तक "प्रभावी ढंग से काम करने वाली विरासत संहिता" सी विकास के दौरान इकाई परीक्षण के लिए बहुत सारी तकनीकें प्रस्तुत करती है।

वहाँ निर्भरता इंजेक्शन से संबंधित तकनीकों हैं जो सी के लिए विशिष्ट हैं, जिसे मैंने कहीं और नहीं देखा है।

मैं एक ढांचा का उपयोग नहीं करता, मैं सिर्फ autotools "चेक" लक्ष्य समर्थन का उपयोग करता हूँ एक "मुख्य" लागू करें और दृढ़ता से उपयोग करें

मेरा परीक्षण dir Makefile.am (एस) की तरह दिखते हैं:

 check_PROGRAMS = test_oe_amqp test_oe_amqp_SOURCES = test_oe_amqp.c test_oe_amqp_LDADD = -L$(top_builddir)/components/common -loecommon test_oe_amqp_CFLAGS = -I$(top_srcdir)/components/common -static TESTS = test_oe_amqp 

हमने आसान प्रयोज्यता और पोर्टेबिलिटी के लिए CHEAT ( GitHub पर होस्ट) लिखा है

इसकी कोई निर्भरता नहीं है और इसके लिए कोई स्थापना या कॉन्फ़िगरेशन की आवश्यकता नहीं है। केवल एक हैडर फ़ाइल और एक परीक्षण मामले की आवश्यकता है।

 #include <cheat.h> CHEAT_TEST(mathematics_still_work, cheat_assert(2 + 2 == 4); cheat_assert_not(2 + 2 == 5); ) 

टेस्ट एक एक्जीक्यूटेबल में संकलित करता है जो टेस्ट चलाने और उनके परिणामों की रिपोर्ट करने का ख्याल रखता है।

 $ gcc -I . tests.c $ ./a.out .. --- 2 successful of 2 run SUCCESS 

यह बहुत रंग भी है

सीपीटीएटीईस्ट – यूनिट परीक्षण सी कोड के लिए अत्यधिक अनुशंसित ढांचे।

एम्बेडेड सी के लिए इस थ्रेड TDD में उल्लेखित पुस्तक में दिए गए उदाहरण CppUTest का उपयोग करते हुए लिखे गए हैं।

मैं एक एम्बेडेड सी / सी ++ पर्यावरण (मुख्यतः C ++) के लिए CxxTest का उपयोग करता हूं ।

मुझे CxxTest पसंद है क्योंकि इसमें टेस्ट धावक बनाने के लिए एक पर्ल / अजगर स्क्रिप्ट है I इसे सेटअप प्राप्त करने के लिए एक छोटी सी ढलान के बाद (छोटे अभी भी जब से आपको टेस्ट रनर लिखना नहीं पड़ता है), इसका उपयोग करना आसान है (नमूने और उपयोगी दस्तावेज़ शामिल हैं) सबसे अधिक काम 'हार्डवेयर' कोड एक्सेस करने की स्थापना कर रहा था, इसलिए मैं यूनिट / मॉड्यूल परीक्षा प्रभावी रूप से कर सकता था। उसके बाद नए यूनिट परीक्षण के मामलों को जोड़ना आसान है।

जैसा कि पहले बताया गया है कि यह सी / सी ++ यूनिट परीक्षा ढांचा है। तो आपको एक C ++ कंपाइलर की आवश्यकता होगी

CxxTest उपयोगकर्ता मार्गदर्शिका CxxTest Wiki

मेरे स्पष्ट पूर्वाग्रह के अलावा

http://code.google.com/p/seatest/

यूनिट टेस्ट सी कोड का एक सरल सरल तरीका है। माइमिक्स xUnit

मिनुनिट पढ़ने के बाद मैंने सोचा था कि मैक्रो का दावा करने के लिए एक बेहतर तरीका आधार था, जो कि मैं रक्षात्मक कार्यक्रम तकनीक का उपयोग करता हूं। इसलिए मैंने मानक के साथ मिश्रित मिनुनीट के समान विचार का इस्तेमाल किया। आप k0ga के ब्लॉग में मेरे ढांचे (एक अच्छा नाम NoMinunit) देख सकते हैं

सीमोकरी एक हाल ही में शुरू की गई Google कोड परियोजना है जो यूनिट परीक्षणों को लिखने के लिए सी लाइब्रेरी का उपयोग करने के लिए बहुत आसान है।

Google में उत्कृष्ट परीक्षण ढांचा है http://code.google.com/p/googletest/wiki/GoogleTestPrimer

और हां, जहां तक ​​मुझे लगता है कि यह सादे सी के साथ काम करेगा, अर्थात् C ++ की आवश्यकता नहीं है (सी ++ कंपाइलर की आवश्यकता हो सकती है)।

सबसे पहले, यहां देखें: http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C

मेरी कंपनी की सी लाइब्रेरी है जो हमारे ग्राहकों का उपयोग करती है। कोड का परीक्षण करने के लिए हम CxxTest (एक सी ++ यूनिट टेस्ट लाइब्रेरी) का उपयोग करते हैं। CppUnit भी काम करेगा यदि आप सी में फंस रहे हैं, तो मैं आरक्यूएनआईटी की सिफारिश करता हूं (लेकिन CUnit भी अच्छा है)।

मैंने लक्ष्य पर परीक्षण करने से पहले पीसी पर एम्बेडेड कोड के लिए कुछ यूनिट परीक्षण करने के लिए आरक्यूएनआईटी का इस्तेमाल किया। अच्छा हार्डवेयर इंटरफ़ेस अमूर्त महत्वपूर्ण है अंतराल और स्मृति मैप रजिस्टर्स आपको मारने जा रहे हैं।

क्यूक की कोशिश करो! – http://code.google.com/p/lcut

यदि आप JUnit से परिचित हैं, तो मैं CppUnit की सिफारिश। http://cppunit.sourceforge.net/cppunit-wiki

यह मानते हुए कि आपके पास सी ++ कंपाइलर हैं जो यूनिट टेस्ट करते हैं। यदि नहीं, तो मुझे एडम रोजेनफील्ड से सहमत होना होगा कि चेक आप क्या चाहते हैं

एक तकनीक का उपयोग सी मॉड्यूल के रूप में लक्ष्य प्रणाली के स्रोत को बनाए रखते हुए, एक सी + + xUnit ढांचे (और सी ++ कंपाइलर) के साथ इकाई परीक्षण कोड को विकसित करना है।

सुनिश्चित करें कि आप नियमित रूप से आपके सी स्रोत को अपने क्रॉस-कंपाइलर के तहत संकलित करें, यदि संभव हो तो अपने यूनिट परीक्षणों के साथ।

लियूयू ( http://koanlogic.com/libu ) में एक यूनिट टेस्ट मॉड्यूल है जो स्पष्ट टेस्ट सुइट / मामले निर्भरता, अलगाव का परीक्षण, समानांतर निष्पादन और एक अनुकूलन रिपोर्ट फॉर्मेटर (डिफ़ॉल्ट स्वरूप xml और txt) की अनुमति देता है।

लाइब्रेरी बीएसडी लाइसेंस प्राप्त है और इसमें कई अन्य उपयोगी मॉड्यूल शामिल हैं – नेटवर्किंग, डीबगिंग, आमतौर पर इस्तेमाल किए जाने वाले डेटा संरचनाएं, कॉन्फ़िगरेशन आदि – आपको उन्हें अपनी परियोजनाओं में चाहिए …

मुझे आश्चर्य है कि कोई भी कटर का उल्लेख नहीं करता (http://cutter.sourceforge.net/) आप सी और सी ++ का परीक्षण कर सकते हैं, यह स्वतः autotools के साथ एकीकृत करता है और वास्तव में एक अच्छा ट्यूटोरियल उपलब्ध है।

एपीआई सेंनेटिक चेकर – सी / सी ++ पुस्तकालयों के लिए परीक्षण ढांचा:

साझा सी / सी ++ लाइब्रेरी के लिए बुनियादी इकाई परीक्षणों का एक स्वचालित जनरेटर यह पैरामीटर के लिए इनपुट डेटा (सबसे ज्यादा, लेकिन दुर्भाग्य से सभी मामलों में) उत्पन्न करने में सक्षम है और हेडर में घोषणाओं के विश्लेषण के माध्यम से एपीआई में प्रत्येक फ़ंक्शन के लिए सरल ("विवेक" या "उथले" गुणवत्ता वाले) फ़ाइलें।

उत्पन्न परीक्षणों की गुणवत्ता सरल उपयोग मामलों में महत्वपूर्ण त्रुटियों की अनुपस्थिति को देखने की अनुमति देती है। यह टूल जनरेटेड परीक्षणों को बनाने और निष्पादित करने में सक्षम है और दुर्घटनाओं (segfaults), अवरुद्ध, सभी प्रकार के उत्सर्जित संकेतों, गैर-शून्य कार्यक्रम रिटर्न कोड और प्रोग्राम फांसी का पता लगाता है।

उदाहरण:

  • Fontconfig 2.8.0 के लिए परीक्षण सूट
  • फ्रीटाइप 2.4.8 के लिए टेस्ट सूट

यदि आप Win32 प्लेटफॉर्म या एनटी कर्नेल मोड को लक्षित कर रहे हैं, तो आपको सीएफिक्स पर नजर रखना चाहिए।

यदि आप अभी भी परीक्षण चौखटे के लिए शिकार पर हैं, तो CUnitWin32 Win32 / NT मंच के लिए एक है।

यह एक मौलिक समस्या को हल करता है जो मुझे अन्य परीक्षण चौखटे से सामना करना पड़ा। अर्थात् वैश्विक / स्थैतिक चर एक नियतात्मक स्थिति में हैं क्योंकि प्रत्येक परीक्षण को एक अलग प्रक्रिया के रूप में निष्पादित किया जाता है।