這個問題出現在MSBuild.EXE中,滋生于某個事件,這個事件就是VSPERFMON.EXE從帶有bInheritHandles標記的 VSPERFCMD.EXE進程中產生到CreateProcess,并且設置為“真”。任何帶有繼承句柄開始的進程將在MSBuild.EXE下掛起。因此,我必須在任務中從ITask.Execute方法調用Process.Start,通過這樣操作才能使MSBuild.EXE下的所有事情正常運行。
與GenericTest和EXEs一起合作
如果你已經獲得一個基于EXE程序的存在的測試系統,在文檔中GenericTest類型的論述可能傷害您的好奇心。當在一個依賴運行九個EXE作為單元測試的批處理文件的項目上進行工作時,我可以使用GenericTest類型快速的包裝一些自動化過程中存在的代碼。雖然這也有一些catch。第一個小的障礙就是GenericTest允許0作為一個成功的來自EXE的返回值。那并不是一個很大的處理,但是考慮到GenericTest的高級特性,我很沮喪的看到與可接受的退出代碼區域一樣簡單的事情被遺漏了。
GenericTest的一個比較大的問題就是它是hardcoding的一個堡壘。幸運地,可以容易地指出相對路徑地文治。如果你地 GenericTest存在C:\FOO中,事實上測試將從C:\FOO\TestResults\
一個便利地特性,GenericTest類型將捕獲定位到標準輸出地任何事情,在結果文件中提供一個運行日志。不幸的是,這看上去像是一個捕獲的問題,在那提取一些信息將導致測試驅動進程掛起。但是大部分測試程序在幾秒中內不會抽空輸出結果中的100行。
創建單元測試
當提到測試,Visual Studio真正的魔力就是當你在編輯器里右擊一個方法時,它可以奇妙的創建你得到的單元測試選項。這個特性非常好,可以很容易的快速添加單元測試。但是,我遇到了一個小的哲學問題,它讓你創建可以直接進入類并且訪問私有方法的單元測試。
針對允許測試工具直接調用私有的或受保護的方法的爭論就是它減化了測試(只寫很少的代碼),并且幫助擴寬了代碼覆蓋。這些爭論是很誘人的,但是我同意這個觀點,就是認為單元測試應該僅僅通過公共接口出現。單元測試是代碼的首次使用,你想朝著其他的怎么使用它的方向來調整測試。如果有一些私有方法,這些方法你在沒有short circuiting和直接的調用它們的情況下不能充分的測試,我必須知道是否代碼需要被注冊。為了阻止偶然的創建一個直接調用私有方法的單元測試,找到創建單元測試對話框,在右上角點擊過濾,然后清空顯示非公共項目。
我決不是一個絕對論者。我確定有一些示例,在示例里面它將幫助調用私有方法。但是,僅因為工具允許你做一些事情并不意味著你將依賴它。單元測試是測試的第一階段,它也是你開始white box測試的第一個位置。
使用NUnit
我有一些項目,在項目中我們已經在一個擴充NUint的測試系統做出了很大投資。(對.NET Framework 2.0起作用的新版本即將被發布)在一個示例中,我們想要代碼在NUnit和Visual Studio測試系統之間是便攜式的。當計劃這個時,我偶然發現很酷的一些事情,那就是需要最少的代碼改變,并且允許代碼與NUnit和Visual Studio一起工作。
我有一些項目,在項目中我們已經在一個擴充NUint的測試系統做出了很大投資。(對.NET Framework 2.0起作用的新版本即將被發布)在一個示例中,我們想要代碼在NUnit和Visual Studio測試系統之間是便攜式的。當計劃這個時,我偶然發現很酷的一些事情,那就是需要最少的代碼改變,并且允許代碼與NUnit和Visual Studio一起工作。
文章來源于領測軟件測試網 http://www.kjueaiud.com/