मोक्स/स्टब्स/नकली/परीक्षण युगल/आदि। यूनिट परीक्षणों में ठीक है, और अलगाव में परीक्षण के तहत कक्षा/प्रणाली का परीक्षण करने की अनुमति देता है। एकीकरण परीक्षण किसी भी झुंड का उपयोग नहीं कर सकता है; वे वास्तव में डेटाबेस या अन्य बाहरी निर्भरता मारा।
जब आप करना चाहते हैं तो आप एक नकली या स्टब का उपयोग करते हैं। आम तौर पर ऐसा इसलिए होता है क्योंकि जिस वर्ग को आप परीक्षण करने का प्रयास कर रहे हैं वह एक इंटरफ़ेस पर निर्भरता है। टीडीडी के लिए आप इंटरफेस, कार्यान्वयन नहीं, और निर्भरता इंजेक्शन (आमतौर पर बोलने) का उपयोग करना चाहते हैं।
एक बहुत ही सरल मामला:
public class ClassToTest
{
public ClassToTest(IDependency dependency)
{
_dependency = dependency;
}
public bool MethodToTest()
{
return _dependency.DoSomething();
}
}
IDependency एक अंतरफलक, संभवतः महंगा कॉल (डेटाबेस का उपयोग, वेब सेवा कॉल, आदि) के साथ एक है। एक परीक्षा पद्धति के समान कोड शामिल हो सकता है:
// Arrange
var mock = new Mock<IDependency>();
mock.Setup(x => x.DoSomething()).Returns(true);
var systemUnderTest = new ClassToTest(mock.Object);
// Act
bool result = systemUnderTest.MethodToTest();
// Assert
Assert.That(result, Is.True);
ध्यान दें कि मैं राज्य परीक्षण कर रहा हूँ (के रूप में @Finglas सुझाव दिया), और मैं केवल परीक्षण के अंतर्गत व्यवस्था के खिलाफ जोर देते हुए कर रहा हूँ (कक्षा मैं के कहने एम परीक्षण)। मैं संपत्ति मूल्य (राज्य) या विधि के वापसी मूल्य की जांच कर सकता हूं, क्योंकि यह मामला दिखाता है।
मैं The Art of Unit Testing पढ़ने की अनुशंसा करता हूं, खासकर यदि आप .NET का उपयोग कर रहे हैं।
अपने अंतिम बिंदु के लिए जांचें: http://martinfowler.com/articles/mocksArentStubs.html यह सुनिश्चित करने के लिए कि आप मतभेदों से अवगत हैं। – Finglas
यहां कुछ प्रश्नों को संबोधित करने के लिए एक अच्छा पठन है: http://xunitpatterns.com/TestStrategy.html –