मैं एक पार्सर लिख रहा हूं और उसी के एक हिस्से के रूप में, मेरे पास एक Expanderवर्ग है जो एकल जटिल बयान को कई सरल बयानों में "विस्तार" करता है। उदाहरण के लिए, यह इसका विस्तार करेगा:
x = 2 + 3 * a
में:
tmp1 = 3 * a
x = 2 + tmp1
अब मैं सोच रहा हूं कि इस कक्षा का परीक्षण कैसे किया जाए, विशेष रूप से परीक्षणों की व्यवस्था कैसे करें। मैं मैन्युअल रूप से इनपुट सिंटैक्स ट्री बना सकता हूं:
var input = new AssignStatement(
new Variable("x"),
new BinaryExpression(
new Constant(2),
BinaryOperator.Plus,
new BinaryExpression(new Constant(3), BinaryOperator.Multiply, new Variable("a"))));
या मैं इसे एक स्ट्रिंग के रूप में लिख सकता हूं और इसे पार्स कर सकता हूं:
var input = new Parser().ParseStatement("x = 2 + 3 * a");
दूसरा विकल्प बहुत सरल, छोटा और पठनीय है। लेकिन यह एक संप्रदाय का भी परिचय देता है Parser, जिसका अर्थ है कि एक बग Parserइस परीक्षण को विफल कर सकता है। तो, परीक्षण की एक इकाई परीक्षण किया जा रहा बंद कर देंगे Expander, और मैं तकनीकी रूप से के एकीकरण के परीक्षण हो जाता है लगता है Parserऔर Expander।
मेरा सवाल है: क्या इस Expanderवर्ग का परीक्षण करने के लिए इस तरह के एकीकरण परीक्षणों पर ज्यादातर (या पूरी तरह से) भरोसा करना ठीक है ?
Parserकुछ अन्य परीक्षण में विफल हो सकता है एक समस्या नहीं है यदि आप आदतन केवल शून्य विफलताओं पर प्रतिबद्ध हैं, इसके विपरीत इसका मतलब है कि आपके पास अधिक कवरेज हैParser। मैं इसके बारे में चिंता करना चाहूंगा कि एक बगParserइस परीक्षण को सफल बना सकता है जब इसे विफल होना चाहिए था । यूनिट परीक्षण बग को खोजने के लिए होते हैं, आखिरकार एक परीक्षण टूट जाता है जब यह नहीं होता है लेकिन होना चाहिए।