प्रौद्योगिकी ढेर: .NET 4, C#, NUnitटीडीडी: क्या यह एकीकरण परीक्षण करने के लिए व्यवहार्य है, लेकिन कोई यूनिट परीक्षण नहीं है?
मैं छवि प्रसंस्करण करने वाली एक नई परियोजना में परीक्षण संचालित विकास को लागू करने का प्रयास कर रहा हूं। मेरे पास एक बेस क्लास है जिसमें साझा फ़ाइल I/O विधियां और उप-वर्ग शामिल हैं जो विभिन्न विशिष्ट प्रोसेसिंग एल्गोरिदम निष्पादित करते हैं। जैसा कि मैं इसे समझता हूं, यूनिट परीक्षण फाइल सिस्टम या अन्य ऑब्जेक्ट्स को स्पर्श नहीं करते हैं, और नकली व्यवहार जहां होता है। मेरी बेस क्लास में केवल सरल एक्सेसर्स और सीधा फ़ाइल सिस्टम I/O कॉल शामिल हैं।
public class BaseFile
{
public String Path { get; set; }
public BaseFile()
{
Path = String.Empty;
}
public BaseFile(String path)
{
if (!File.Exists(path))
{
throw new FileNotFoundException("File not found.", path);
}
Path = path;
}
}
क्या इन तरीकों का परीक्षण करने में कोई मूल्य है? यदि हां, तो मैं फाइल सिस्टम में कॉल को कैसे दूर कर सकता हूं?
मेरा दूसरा प्रश्न यह है कि उप-वर्ग का परीक्षण कैसे करें जो छवि फ़ाइल (~ 200 एमबी) के लिए विशिष्ट है। मैंने साइट की खोज की है और similarquestions पाया है, लेकिन फ़ाइल प्रोजेक्ट से निपटने वाला कोई भी व्यक्ति इस परियोजना पर काम नहीं कर रहा है। क्या कक्षा के लिए एकीकरण परीक्षण (एक "सुनहरी फ़ाइल" का उपयोग करके) के लिए यह संभव है, लेकिन कोई यूनिट परीक्षण नहीं है? मैं टीडीडी तरीकों का कड़ाई से पालन कैसे कर सकता हूं और पहले इस मामले में एक असफल परीक्षण लिख सकता हूं?
यदि टीडीडी लागू करना मुश्किल है, या अपर्याप्त है, तो इसे लागू न करें। यह चांदी की गोली नहीं है। – CharlesB
@ चार्ल्स बी, मैं सहमत हूं। दुर्भाग्य से यह भावना अक्सर टीडीडी का उपयोग न करने के लिए बहाना के रूप में प्रयोग की जाती है जब यह वास्तव में सही और फायदेमंद होता है। कभी-कभी बड़ा वक्र होता है या करने के लिए बहुत सारी आधार होती है लेकिन यह आमतौर पर भुगतान करती है। –
@CharlesB यकीन नहीं है कि मैं इसके साथ सहमत हूं। समस्या यह है कि तब यह वर्ग जो कुछ काम करता है उसका परीक्षण नहीं किया जाता है, और इस प्रकार इसे बदलने का आपका विश्वास कम हो जाता है। समस्या यह है कि System.IO में स्थैतिक तरीकों का नकल करना आसान नहीं है, लेकिन इसका मतलब यह नहीं है कि परीक्षण पर छोड़ दें, इसका मतलब है कि आपको उन्हें टेस्ट करने योग्य बनाने के लिए थोड़ा और काम करने की आवश्यकता है। यही कारण है कि एमएस सिस्टम.Web.HttpContextBase पेश करता है, जो उन समस्याओं को हल करने के लिए आसानी से HttpContext को नकल करने में सक्षम नहीं है। हमें httpContext का परीक्षण करने की आवश्यकता नहीं है, बस हमारे कोड सही ढंग से इसके साथ इंटरैक्ट करते हैं। – Andy