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