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