मैं एक पार्सर लिख रहा हूं और उसी के एक हिस्से के रूप में, मेरे पास एक 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
इस परीक्षण को सफल बना सकता है जब इसे विफल होना चाहिए था । यूनिट परीक्षण बग को खोजने के लिए होते हैं, आखिरकार एक परीक्षण टूट जाता है जब यह नहीं होता है लेकिन होना चाहिए।