2

我們正在嘗試將.NET 3.5解決方案遷移到.Net 4.0中,但遇到可以使用使用4.0版本的構建程序集運行的測試框架的複雜問題。 .Net框架。.Net 4.0下的單元測試和測試運行程序問題

此前,我們在我們的NAnt腳本中使用了NUnit 2.4.3.0和NCover 1.5.8.0,但NUnit 2.4.3.0不喜歡.Net 4.0項目。因此,我們在測試項目本身內升級到NUnit框架的新版本,但後來發現NCover 1.5.8.0不支持此版本的NUnit。

我們在代碼中發現錯誤,說明使用.Net框架的新版本構建的程序集的效果超過了當前使用的版本,因爲它使用.Net Framework 2.0來運行這些工具。

然後,我們嘗試使用Gallio的Icarus測試運行器GUI,但發現這和MbUnit僅支持.NET Frameword的3.5版本,結果是「測試將被忽略」。我們發現PartCover是取代NCover的一個很好的選擇,(因爲NCover的新版本非常值得關注,PartCover是免費),但這只是一小步,因爲我們無法讓測試運動員先工作!

能否像我上面所描述的那樣,在一個以.Net 4.0運行的測試框架上揭示什麼?如果沒有,我擔心我們可能不得不恢復使用.Net 3.5,直到我們目前使用的工具製造商有機會升級到.Net 4.0。

謝謝。

回答

0

正確 - 自己解決這個問題。這是如何,以防其他人有相同的問題。

NUnit 2.5.5 is now out,這支持項目建設使用.NET Framework 4.0版,但你必須使用額外的參數,即/framework=4.0.30319,在惡性使用時看起來像這樣,通過NCover:

<exec program="C:\Program Files\TestDriven.NET 2.0\NCover\1.5.8\NCover.Console.exe"> 
<arg value="&quot;C:\Program Files\NUnit 2.5.5\bin\net-2.0\nunit-console.exe&quot;"/> 
<arg value="&quot;bin/release/myProject.Test.dll&quot; /framework=4.0.30319"/> 
<arg value="/xml"/> 
<arg value="bin/release/myProject.Test-dll-results.xml"/> 
<arg value="//x"/> 
<arg value="bin/release/myProject.Test-dll-coverage-results.xml"/> 
<arg value="//q"/> 
<arg value="//a"/> 
<arg value="myProject.Test"/> 
</exec> 

由於只有升級到NUnit的2.5.5(以及與增加此標誌)這個現在用很少的變化構建腳本,這是很好的工作。

因此,簡言之:

我的惡性腳本調用出來NCover 1.5.8和調用NUnit的2.5.5哪些測試我的單元測試組件的.dll使用.NET 4.0構建的。 NUnit生成第一個輸出文件(bin/release/myProject.Test-dll-results.xml),然後由NCover提取並輸出到第二個輸出結果文件(bin/release/myProject.Test-dll-coverage -results.xml),然後它可以簡單地包含在Cruise Control的ccnet.config文件中,以便在每次構建之後自動包含在webdashboard中。

簡單。希望它可以幫助別人!