हमें wxwidgets के लिए यूनिट परीक्षण लिखने की आवश्यकता है Google टेस्ट फ्रेमवर्क का उपयोग कर एप्लिकेशन। समस्या यह है कि wxwidgets अनुप्रयोग मुख्य लूप प्रारंभ करने और दर्ज करने के लिए मैक्रो IMPLEMENT_APP (MyApp) का उपयोग करता है। यह मैक्रो int मुख्य() सहित कई फ़ंक्शंस बनाता है। Google टेस्ट फ्रेमवर्क प्रत्येक परीक्षण के लिए मैक्रो परिभाषाओं का भी उपयोग करता है।wxwidgets: मैक्रोज़ का उपयोग किये बिना और मुख्य एप्लिकेशन लूप में प्रवेश किए बिना wxApp को कैसे प्रारंभ करें?
समस्याओं में से एक हमने पाया है कि हम निम्न कोड के साथ मैक्रो की जगह सकता है, कि यह संभव, परीक्षण मैक्रो के भीतर से wxWidgets मैक्रो कॉल करने के लिए, क्योंकि पहले एक कार्यों बनाता नहीं है .. तो:
wxApp* pApp = new MyApp();
wxApp::SetInstance(pApp);
wxEntry(argc, argv);
यह एक अच्छा प्रतिस्थापन है, लेकिन wxEntry() कॉल मूल एप्लिकेशन लूप में प्रवेश करती है। अगर हम wxEntry() को कॉल नहीं करते हैं तो अभी भी एप्लिकेशन के कुछ हिस्सों को प्रारंभ नहीं किया गया है।
प्रश्न यह है कि wxApp चलाने के लिए आवश्यक सभी चीज़ों को प्रारंभ करने के लिए, वास्तव में इसे चलाने के बिना, ताकि हम इकाई परीक्षण परीक्षण कर सकें?
असल में, यह काम नहीं करता है। आवेदन अभी भी –
शुरू नहीं हुआ है क्या आप "प्रारंभ नहीं" के बारे में अधिक विशिष्ट हो सकते हैं? यदि आप स्रोत कोड पढ़ते हैं, तो आप देखेंगे कि wxEntry वास्तव में wxEntryStart() को आमंत्रित करने से कहीं अधिक नहीं करता है और फिर "ऑनइनिट()" और "ऑनरुन()" को कॉल करता है। मुझे लगता है कि आप अपने परीक्षणों में मैन्युअल रूप से OnInit() को कॉल करना चाहते हैं। – kbluck
ठीक है, यह कुछ है जो मुझे याद आया - OnInit()। मैं इसे आजमाऊंगा। –