2010-01-16 17 views
9

के लिए कोई अच्छा यूनिट परीक्षण पैकेज है क्या कोई अच्छा ढांचा है जो एक्सेल में यूनिट परीक्षण कोड की सहायता कर सकता है?एक्सेल

+0

आप परीक्षण करने के लिए कोशिश कर रहे हैं और आप किस भाषा का प्रयोग कर रहे हैं क्या? – Elisha

उत्तर

5

मुझे लगता है कि आप मॉड्यूल में वीबीए कोड का परीक्षण करना चाहते हैं।
सबसे पहले, भले ही वीबीए के लिए एक अच्छा यूनिट परीक्षण ढांचा उपलब्ध हो, मुझे संदेह है कि कार्यपुस्तिका की निर्भरताओं के कारण परीक्षण बहुत जटिल होगा। यदि आपका कोड कार्यपुस्तिका के साथ इंटरैक्ट करता है और इसकी वस्तुएं कुल दुःस्वप्न होने जा रही हैं क्योंकि आप वास्तव में इनमें से कोई भी नकल नहीं कर सकते हैं: एक मॉड्यूल का परीक्षण करने की कल्पना करें जो एक शीट में डेटा पढ़ता है और एक चार्ट को दूसरे में बनाता है ... संक्षेप में , एक एक्सेल कार्यपुस्तिका आपके दृढ़ता, डोमेन और प्रस्तुति को सभी में विलीन करती है - परीक्षण के लिए अच्छा नहीं है।
दूसरा मामला कोड है जो ज्यादातर गणना गणना उन्मुख है। यदि वह कोड इतना जटिल हो जाता है कि यह परीक्षण की गारंटी देता है, तो एक चीज जिसे आप विचार कर सकते हैं वह वास्तव में आपके कोड को वीबीए के बाहर ले जाने के लिए है, इसे टेस्ट करने योग्य बनाने के लिए। मैं अक्सर उन ग्राहकों के साथ काम करता हूं जिनके पास भारी वीबीए के साथ बड़े वित्तीय मॉडल हैं, और जब मैं वीबीए कोड को सी # में निकालना चाहता हूं और इसे एक वीएसटीओ एड-इन बना सकता हूं। लाभ यह है कि मैं कोड का परीक्षण कर सकता हूं, और वीबीए आईडीई के बजाय विजुअल स्टूडियो में काम कर सकता हूं।

3

इंटरनेट के चारों ओर लात मारने वाले कुछ प्रयोग हैं: EUnit और VBAUnit। इन परियोजनाओं में से कोई भी सक्रिय समुदायों में प्रतीत नहीं होता है, इसलिए वे जुनीट या न्यूट के रूप में मजबूत (कहने) के रूप में मजबूत होने की संभावना नहीं है। लेकिन वे आपके उद्देश्यों के लिए पर्याप्त हो सकते हैं।

+0

यह अच्छी चीजें है .... मैं अपने मुंशी दोस्त को समझाने रहा हूँ eunit के साथ खेल का प्रयास करने के – jayunit100

3

मैं Debug.Assert का उपयोग करता हूं। मैं मॉड्यूल में परीक्षण व्यवस्थित करता हूं। प्रत्येक मॉड्यूल में मैं Sub RunAll बनाए रखता हूं जो उस मॉड्यूल में सभी परीक्षण विधियों को कॉल करता है।

प्रोजेक्ट में सभी परीक्षण चलाने के लिए, मेरे पास एक रनऑल के साथ एक मॉड्यूल ऑलटेस्ट है जो सभी परीक्षण मॉड्यूल में RunAll को कॉल करता है।

सरल और बिना किसी झगड़े के महान काम करता है। आप निम्नलिखित VBA परीक्षण कर सकते हैं, https://www.zoomeranalytics.com/blog/unittests-for-microsoft-excel

संक्षेप में:

MSDN article on VBA Debug.Assert

1

मैं कैसे आप पायथन के unittest बुनियादी ढांचे आसानी से उपयोग सामान्य रूप में VBA के लिए इकाई परीक्षण लेकिन यह भी सेल तर्क लिखने के लिए कर सकते हैं के बारे में एक ब्लॉग पोस्ट में लिखा था समारोह:

Function mysum(x, y) As Double 
    mysum = x + y 
End Function 

अजगर में unittest निम्नलिखित का उपयोग कर:

import unittest 
import xlwings as xw 

class TestMyBook(unittest.TestCase): 
    def setUp(self): 
     # setUp will be called before the execution of each unit test 
     self.wb = xw.Book('mybook.xlsm') # map workbook 
     self.mysum = self.wb.macro('Module1.mysum') # map function 

    def test_mysum(self): 
     result = self.mysum(1, 2) # get result from VBA 
     self.assertAlmostEqual(3, result) # test if result corresponds to the expected value 

if __name__ == '__main__': 
    # This allows us to easily run the tests from the command prompt 
    unittest.main() 
1

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

एक संक्षिप्त विवरण, ऊपर लिंक विकि पृष्ठ से लिया:

क्यों Rubberduck?

क्योंकि हम एक पालतू परियोजना चाहते हैं, और यह मजेदार और चुनौतीपूर्ण है। विचार वीबीए में प्रोग्रामिंग करने के लिए हम कर सकते हैं और विरासत वीबीए कोड को दोबारा करने के लिए, जैसा कि विजुअल स्टूडियो के आधुनिक संस्करणों में आनंददायक है। वीबीई के पास तक का वीबी 6 महसूस हुआ है, मुझे याद है, रबरडक इसे ले जाता है ... कहीं और।

यह सब VBA में इकाई परीक्षण के बारे में एक पोस्ट के साथ कोड की समीक्षा पर शुरू कर दिया,। यह एक 100% VBA काम कर समाधान में वृद्धि हुई है, और फिर हम इस इकाई परीक्षण आईडीई में निर्मित कार्यक्षमता है चाहता था - कॉम ऐड-इन समाधान इसके साथ शुरू कर दिया। उन्हें बाहर बिंदु या कम से कम -

एक COM कि ऐड-इन कस्टम मेनू, उपकरण पट्टियों और dockable खिड़कियां जोड़ सकते हैं में पूरे VBE ऑब्जेक्ट मॉडल के लिए उपयोग करने के बाद, हम पार्स और कोड का निरीक्षण किया, और मुद्दों को ठीक करना चाहता था ।

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

मैं इसे लगभग आधा साल (मुख्य रूप से एक्सेल 2010 के तहत) का उपयोग कर रहा हूं, और यह काफी स्थिर और सहायक रहा है। इस प्रकार, मैं यह सिफारिश करेंगे।