जब मैं एक इंटरफ़ेस लिख रहा हूं, तो इंटरफ़ेस के समान पैकेज में अपने परीक्षणों को परिभाषित करना अक्सर सुविधाजनक होता है, और फिर इंटरफ़ेस सेट को लागू करने वाले कई पैकेजों को परिभाषित करता है, उदाहरण के लिए।मेरे पास एकाधिक पैकेजों के लिए एक सामान्य परीक्षण सूट कैसे हो सकता है?
package/
package/impl/x <-- Implementation X
package/impl/y <-- Implementation Y
वहाँ एक आसान तरीका एक ही टेस्ट स्वीट (इस मामले में, पैकेज/* _ test.go में स्थित) उप संकुल में चलाने के लिए है?
सबसे अच्छा समाधान मैं अब तक लेकर आए हैं एक परीक्षण पैकेज को जोड़ने के लिए है:
package/tests/
कौन सा टेस्ट स्वीट लागू करता है, और कार्यान्वयन में से प्रत्येक में एक परीक्षण परीक्षण चलाने के लिए, लेकिन यह दो कमियां हैं:
1) पैकेज में परीक्षण/परीक्षण _test.go फ़ाइलें में नहीं हैं, और वास्तविक पुस्तकालय, godoc द्वारा प्रलेखित का हिस्सा होने अंत, आदि
2) पैकेज में परीक्षण/परीक्षण एक कस्टम टेस्ट धावक द्वारा चलाए जाते हैं, जिन्हें मूल रूप से सभी को डुप्लिकेट करना होता है परीक्षणों के लिए स्कैन करने और उन्हें चलाने के लिए 'जाने के परीक्षण' की कार्यक्षमता।
एक सुंदर कठोर समाधान की तरह लगता है।
क्या ऐसा करने का एक बेहतर तरीका है?
हाँ, यह बहुत कुछ है जो मैं कर रहा हूं (विभिन्न तर्कों का उपयोग करके इम्प्लायर को सेटअप और टियरडाउन फ़ंक्शन को अगर चाहें तो आपूर्ति करने दें); जैसा कि मैंने कहा था, यद्यपि जेनरेटेड डॉक आउटपुट में फ़ंक्शन चालू होने के लिए थोड़ा परेशान है, और एक 'मेगा टेस्ट' है जो सभी उप परीक्षणों को चलाता है, उस आइटम पर उम्र के लिए 'परीक्षण करें' लटकता है (मैं इसके साथ सहमत हूं आपके सभी अन्य बिंदुएं)। – Doug
@Doug मैं सहायक कार्यों और डेटा के लिए एक संरचना का उपयोग करना पसंद करते हैं; यह बहुत साफ है और यदि ऐसा कोई फ़ंक्शन नहीं है तो आप शून्य (पॉइंटर्स के लिए डिफ़ॉल्ट मान) की आपूर्ति कर सकते हैं। इसके अलावा, यदि आप [test.Short()] (http://golang.org/pkg/testing/#Short) सेट करते हैं और कुछ परीक्षण मामलों को तोड़ते हैं तो आप कुछ परीक्षणों को पट्टी करना चाहेंगे। – fuz
@ डौग बीटीडब्ल्यू, क्या बात यह है कि परीक्षण कार्यों में प्रलेखन में दिखाया गया है? यदि आप दस्तावेज़ीकरण को अव्यवस्थित करते हैं तो आप उन्हें दूसरे पैकेज में ले जा सकते हैं (जैसा कि मैंने सुझाव दिया)। – fuz