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