|
通過(guò)編碼招式和行為驅(qū)動(dòng)開(kāi)發(fā),我受到了一些啟迪,感覺(jué)良好。然而,當(dāng)我意識(shí)到如果以后我就用這種方式編寫(xiě)單元測(cè)試、進(jìn)行開(kāi)發(fā)工作,那會(huì)相當(dāng)痛苦,因?yàn)槊看味家隕ric Lee的ContextSpecification。如果我可以簡(jiǎn)單地選定一個(gè)BDD的單元測(cè)試項(xiàng)目,然后項(xiàng)目創(chuàng)建后我就擁有了所有項(xiàng)目所需的文件,那就容易多了。稍作查詢之后,我找到了一些項(xiàng)目模板導(dǎo)出向?qū)В≒roject Template Export Wizard)的參考資料,似乎這就是最適合我的解決方案。
為了能試試這個(gè)例子,你要從Visual Studio Gallery上下載并安裝Export Template Wizard(在Gallery站點(diǎn)上查詢Export Template Wizard)。這是一個(gè)微軟免費(fèi)的Visual Studio擴(kuò)展,可以將一個(gè)現(xiàn)有的項(xiàng)目導(dǎo)出成項(xiàng)目模板。
在我們創(chuàng)建第一個(gè)模板前,先看看一些已有的模板,了解一下我們可能需要什么,這對(duì)我們來(lái)說(shuō)是很重要的。
安裝好Visual Studio后,它的模板位于以下目錄:
- /VisualStudioInstallationDirectory/Common7/IDE/ItemTemplates/Language/Locale/
- /VisualStudioInstallationDirectory/Common7/IDE/ProjectTemplates/Language/Locale/
例如,下面這個(gè)目錄包含了英文版Visual Studio的項(xiàng)目模板:
- C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/ItemTemplates/CSharp/1033/
此外,當(dāng)你安裝一個(gè)模板的時(shí)候(通常通過(guò)雙擊.vsix文件——微軟Visual Studio擴(kuò)展文件),它會(huì)被安裝到以下文件夾:
- /User Documents and Settings Directory/Local Settings/Application Data/Microsoft/VisualStudio/10.0/Extensions
模板提示:
使用注冊(cè)表編輯器,查看以下鍵,你會(huì)看到所有已安裝的Visual Studio 2010擴(kuò)展:
HKCU/Software/Microsoft/VisualStudio/10.0/ExtensionManager/EnabledExtensions
Visual Studio啟動(dòng)時(shí)會(huì)自動(dòng)更新這里的注冊(cè)項(xiàng)。如果我們刪除掉某個(gè)擴(kuò)展(比如,刪除某個(gè)擴(kuò)展的目錄),Visual Studio下次啟動(dòng)時(shí)會(huì)更新注冊(cè)表中的有關(guān)項(xiàng)。
你會(huì)看到,所有模板的內(nèi)容都存儲(chǔ)在ZIP文件中,這有助于有條理地“把所有東西都放在一起”。當(dāng)你檢查這些ZIP文件時(shí),你會(huì)注意到它們至少都包含一個(gè).vstemplate文件,可以認(rèn)為這就是模板的配置文件。
考慮到我們的目的,我們對(duì)BasicUnitTest模板中的內(nèi)容有所興趣,此模板位于:
C:/Program Files/Microsoft Visual Studio 10.0/Common7
- /IDE/ItemTemplates/CSharp/1033/BasicUnitTest.zip
查看VS 2010中的現(xiàn)有模板時(shí),會(huì)注意到在代碼文件中(比如AssemblyInfo.cs),有一些特殊的關(guān)鍵字。在下面的代碼示例中,高亮顯示的文本說(shuō)明了不同的模板參數(shù)關(guān)鍵字:
using System;
using System.Text;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;$endif$
$if$ ($targetframeworkversion$ == 4.0)using System.Linq;$endif$
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace $rootnamespace$
{
[TestClass]
public class $safeitemname$
{
[TestMethod]
public void TestMethod1()
{
}
}
}
NET技術(shù):使用編碼招式(Coding Katas)、BDD和VS2010項(xiàng)目模板,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。