隨談Visual Studio 2010 Automobile類
Visual Studio 2010經(jīng)過長時間的發(fā)展,很多用戶都很了解Visual Studio 2010 Automobile類了,這里我發(fā)表一下個人理解,和大家討論討論。在我們的需求分析中,我們設想Automobile有兩個屬性Model和TopSpeed,在Visual Studio 2010 Automobile類的默認構造函數(shù)中,這兩個屬性應該被分別初始化為“Not specified”和-1。我們可以在測試函數(shù)中添加如下的語句對這兩個屬性是否被正確地初始化進行測試:
- Assert.IsTrue(myAuto.Model == "Not specified" && myAuto.TopSpeed == -1 );
#t#同樣地,當我們完成了上述代碼的輸入后,Model和TopSpeed下很快就出現(xiàn)了紅色的波浪線,系統(tǒng)提示我們Visual Studio 2010 Automobile類沒有這兩個屬性。按照“即用即產(chǎn)生”的原則,我們可以即時為Visual Studio 2010 Automobile類創(chuàng)建這兩個屬性。
測試類的構造函數(shù)
在測試項目中,我們新建一個測試方法AutomobileWithModelNameCanStart,在這個方法中,我們以指定的model和topspeed創(chuàng)建一個新的Automobile對象。
- public void AutomobileWithModelNameCanStart()
- {
- string model = "550 Barchetta";
- int topSpeed = 199;
- Automobile myAuto = new Automobile(model, topSpeed);
- }
同樣,我們利用“即用即生成”的特性為Visual Studio 2010 Automobile類生成新的構造函數(shù)。在這里我們可以發(fā)現(xiàn)“即用即生成”功能非?!奥斆鳌?,它會根據(jù)這個構造函數(shù)的使用情況,自動檢查參數(shù)的類型,然后也會根據(jù)參數(shù)的名字,選擇合適的屬性來存儲參數(shù)的數(shù)據(jù)。例如在Visual Studio 2010 Automobile類中,它就分別選擇了前面我們添加的兩個屬性Model和TopSpeed來存儲構造函數(shù)的兩個參數(shù)。
- public Automobile(string model, int topSpeed)
- {
- // TODO: Complete member initialization
- this.Model = model;
- this.TopSpeed = topSpeed;
- }
這時我們注意到,當新的構造函數(shù)添加后,原有的默認構造函數(shù)就沒有意義了,在 DefaultAutomobileIsInitializedCorrectly測試方法中我們使用了默認構造函數(shù),這時就會出現(xiàn)紅色的波浪線提示,不過沒有關系,我們可以用“即用即產(chǎn)生”馬上為它創(chuàng)建一個默認的構造函數(shù)。
測試類的成員函數(shù)
在需求分析中,我們的Visual Studio 2010 Automobile類應該具有一個成員函數(shù)Start()和一個屬性IsRunning,分別用來啟動我們的Automobile和判斷它是否正在運行。我們編寫Start()函數(shù)和IsRunning屬性的測試程序如下:
- myAuto.Start();
- Assert.IsTrue(myAuto.IsRunning == true);
因為這兩者并沒有在Visual Studio 2010 Automobile類中實現(xiàn),所以我們利于“即用即產(chǎn)生”功能,在Visual Studio 2010 Automobile類中添加成員函數(shù)Start()和屬性IsRunning。
到這里,我們的測試程序就全部編寫完成了,與此同步的是,我們的目標類Automobile也已經(jīng)搭建好框架,初具雛形了。并且,更加重要的是,Visual Studio 2010 Automobile類的創(chuàng)建是完全基于它的使用情況而創(chuàng)建的,這樣就避免了在開發(fā)后期因為測試無法通過而修改類的設計。