विकासशील वातावरण: जीएनयू जीसीसी (जी ++) 4.1.2
हालांकि मैं यह जांचने की कोशिश कर रहा हूं कि यूनिट परीक्षण में 'कोड कवरेज - विशेष रूप से फ़ंक्शन कवरेज' को कैसे बढ़ाया जाए, मैंने पाया है कि कई बार कक्षा का डोर कई बार उत्पन्न होता है। क्या आप में से कुछ को इस पर कोई विचार है, कृपया?
मैंने कोशिश की और देखा कि मैंने निम्नलिखित कोड का उपयोग करके क्या उल्लेख किया है।
"Test.h" में
class BaseClass
{
public:
~BaseClass();
void someMethod();
};
class DerivedClass : public BaseClass
{
public:
virtual ~DerivedClass();
virtual void someMethod();
};
"Test.cpp" में
#include <iostream>
#include "test.h"
BaseClass::~BaseClass()
{
std::cout << "BaseClass dtor invoked" << std::endl;
}
void BaseClass::someMethod()
{
std::cout << "Base class method" << std::endl;
}
DerivedClass::~DerivedClass()
{
std::cout << "DerivedClass dtor invoked" << std::endl;
}
void DerivedClass::someMethod()
{
std::cout << "Derived class method" << std::endl;
}
int main()
{
BaseClass* b_ptr = new BaseClass;
b_ptr->someMethod();
delete b_ptr;
}
जब मैंने उपरोक्त कोड बनाया (g ++ test.cpp -o test) और फिर देखें कि किस प्रकार के प्रतीक इस प्रकार उत्पन्न हुए हैं,
एनएम --demangle परीक्षण
मैं निम्नलिखित आउटपुट देख सकता था।
==== following is partial output ====
08048816 T DerivedClass::someMethod()
08048922 T DerivedClass::~DerivedClass()
080489aa T DerivedClass::~DerivedClass()
08048a32 T DerivedClass::~DerivedClass()
08048842 T BaseClass::someMethod()
0804886e T BaseClass::~BaseClass()
080488f6 T BaseClass::~BaseClass()
मेरे प्रश्न इस प्रकार हैं।
1) क्यों कई डाइवोर्स उत्पन्न किए गए हैं (बेसक्लास - 2, डेरेवेडक्लास - 3)?
2) इन डार्टर्स में क्या अंतर हैं? उन एकाधिक डोरर्स का चयन कैसे किया जाएगा?
मुझे अब लग रहा है कि C ++ प्रोजेक्ट के लिए 100% फंक्शन कवरेज प्राप्त करने के लिए, हमें इसे समझने की आवश्यकता होगी ताकि मैं अपने यूनिट परीक्षणों में उन सभी डॉकटरों को आमंत्रित कर सकूं।
मैं बहुत सराहना करूंगा अगर कोई मुझे उपरोक्त पर जवाब दे सके।