2011-05-31 5 views
6

मैंने हाल ही में यूनिट परीक्षण के लिए ऑटोफिक्शन लाइब्रेरी (http://autofixture.codeplex.com/) का उपयोग करना शुरू किया और मुझे यह पसंद है।परीक्षण के तहत कक्षा के लिए ऑटोफिक्चर में अज्ञात प्रकार बनाने का उद्देश्य?

मुझे यह कोड नमूना ऑटोफिक्शन कोडप्लेक्स वेबसाइट से मिला है। मेरा प्रश्न लाइन नंबर 8.

1. [TestMethod] 
2. public void IntroductoryTest() 
3. { 
4.  // Fixture setup 
5.  Fixture fixture = new Fixture(); 
6. 
7.  int expectedNumber = fixture.CreateAnonymous<int>(); 
8.  MyClass sut = fixture.CreateAnonymous<MyClass>(); 
9.   
10.  // Exercise system 
11.  int result = sut.Echo(expectedNumber); 
12.   
13.  // Verify outcome 
14.  Assert.AreEqual<int>(expectedNumber, result, "Echo"); 
15.  // Teardown 
16. } 

मैं नहीं समझ सकता, इसलिए हम परीक्षण के अंतर्गत वर्ग के एक गुमनाम वस्तु बनाने की आवश्यकता के संबंध में है।

 MyClass sut = fixture.CreateAnonymous<MyClass>(); 

कक्षा वास्तविक वस्तु आईएमओ होना चाहिए। उदाहरण के लिए ..

 var sut = new MyClass();  

मेरा प्रश्न है, परीक्षण करने के लिए अज्ञात ऑब्जेक्ट बनाने का वास्तविक लाभ क्या है?

उत्तर

3

मामूली मामले में आप सही हैं - कोई भौतिक अंतर नहीं है।

  • : जैसे टेस्ट के तहत अपने सिस्टम के रूप में और उसके Fixture Object रों एक डिफ़ॉल्ट ctor के साथ कुछ की तुलना में अधिक दिलचस्प हो, -

    हालांकि, SUT API Encapsulation इसके उपयोग करता है (यह वास्तव में कोई निर्भरता है?) MyClass सामान की आवश्यकता है यह के कन्स्ट्रक्टर्स में खिलाया जा करने के लिए

  • `MyClass/लिखने गुण है कि आप मूलभूत मूल्यों (संयोग से प्रोग्रामिंग) को लागू करने के लिए नहीं करना चाहती पढ़ा है
  • MyClass की bulding है कुछ भी एल से आप चाहते हैं apply a policy to

को फिर खेलने में आ रही एक Sut Factory शामिल शुरू होता है, बाहरी कोड गिरावट दे दूर और आप इस प्रक्रिया को पार काटने चिंताओं को लागू करने के लिए अनुमति देता है की शक्ति।

संपादित करें: किसी कारण @Brad Wilson saw fit to repost this article जो

+6

+1 मूल रूप से थोड़े मुख्य है के लिए, यह SUT के निर्माता हस्ताक्षर से इकाई परीक्षण अलग करता है, इस प्रकार परीक्षण और अधिक मजबूत जब refactorings का सामना करना पड़ रही है। –

+0

बहुत अच्छा! धन्यवाद रूबेन और मार्क। – Spock

संबंधित मुद्दे