मैं DoYourThingInternal()
पर विचार नहीं होगा (के रूप में दो अलग-अलग कोड के मॉड्यूल है कि अलगाव में परीक्षण किया जा सकता) 2 तरीकों जब से तुम वैसे भी अपने सार वर्ग अकेले का दृष्टांत करने में सक्षम नहीं होगा और होगा DoYourThing()
से अलग होने के लिए हमेशा एक साथ चलें। इसके अलावा, DoYourThingInternal()
आपकी कक्षा के सभी संरक्षित सदस्यों तक पहुंच है और DoYourThing()
पर संभावित साइड इफेक्ट्स के साथ उन्हें संशोधित कर सकता है। तो मुझे लगता है कि DoYourThingInternal()
के ठोस कार्यान्वयन से पूर्ण अलगाव में DoYourThing()
का परीक्षण करना खतरनाक होगा।
हालांकि, इसका मतलब यह नहीं है कि आपके पास DoYourThing()
के अपेक्षित व्यवहार के लिए अलग-अलग परीक्षण नहीं हो सकते हैं, जो एबीएस के सभी कार्यान्वयन और DoYourThingInternal()
के अपेक्षित व्यवहार में समान रहना है।
आप एक (सार) बेस टेस्ट क्लास का उपयोग कर सकते हैं जहां आप DoYourThing()
से अपेक्षित सामान्य व्यवहार के लिए एक परीक्षण परिभाषित करते हैं। फिर प्रत्येक कार्यान्वयन के विनिर्देशों के लिए यूनिट परीक्षण के साथ, एएसबी के कार्यान्वयन के रूप में कई परीक्षण उपखंड बनाते हैं।
आधार परीक्षण वर्ग से परीक्षण विरासत में मिला दिया जाएगा, और जब आप किसी भी उपवर्ग के परीक्षण चलाने, DoYourThing()
के लिए विरासत में मिला परीक्षण भी चलेंगे:
public abstract class AbsBaseTest
{
public abstract Abs GetAbs();
[Test]
public void TestSharedBehavior()
{
getAbs().DoYourThing();
// Test shared behavior here...
}
}
[TestFixture]
public class AbsImplTest : AbsBaseTest
{
public override Abs GetAbs()
{
return new AbsImpl();
}
[Test]
public void TestParticularBehavior()
{
getAbs().DoYourThing();
// Test specific behavior here
}
}
देखें http://hotgazpacho.org/2010/09/testing-pattern-factory-method-on-base-test-class/
अगर पता नहीं है अमूर्त टेस्ट क्लास विरासत सभी यूनिट परीक्षण ढांचे द्वारा समर्थित है हालांकि (मुझे लगता है कि न्यूटिट करता है)।
सुनिश्चित नहीं है कि मैं समझता हूं; क्या आप विस्तारित कर सकते हैं? –