2010-06-11 51 views
2

我自動運行一些測試的NUnit我每晚構建完成時。我有一個控制檯應用程序檢測新版本,然後將構建的MSI複製到本地文件夾,並將我的所有組件部署到測試服務器。之後,我在NUnit dll中進行了一系列測試,通過使用Process/ProcessStartInfo執行「nunit-console.exe」來運行。我的問題是,如何以編程方式獲得Total Success/Failed測試的數字?編程聚會NUnit的結果

回答

3

你有沒有考慮使用像CruiseControl.NET一個持續集成服務器?

它建立並運行你的測試,並顯示在網頁中的結果。如果您只是想要一個工具,請讓nunit-console.exe以XML格式輸出結果,並使用來自巡航控制系統的XSLT腳本對其進行解析/轉換。

Here is an example of such an XSL file如果您在直接輸出nunit-console.exe上運行轉換,那麼您將不得不調整選擇語句並刪除巡航控制。

然而,它聽起來就像你可能會感興趣的持續集成。

0

我們最近也有類似的要求,並寫了一個小開源庫的結果文件合併成一個總的結果集(就好像你與NUnit控制檯的單次運行運行所有測試的)。

您可以在https://github.com/15below/NUnitMerger

1

覺得我們也有類似的要求,我們所做的就是閱讀到由NUnit的生成測試結果的XML文件。

XmlDocument testresultxmldoc = new XmlDocument(); 
testresultxmldoc.Load(this.nunitresultxmlfile); 

XmlNode mainresultnode = testresultxmldoc.SelectSingleNode("test-results"); 
this.MachineName = mainresultnode.SelectSingleNode("environment").Attributes["machine-name"].Value; 
int ignoredtests = Convert.ToInt16(mainresultnode.Attributes["ignored"].Value); 
int errors = Convert.ToInt16(mainresultnode.Attributes["errors"].Value); 
int failures = Convert.ToInt16(mainresultnode.Attributes["failures"].Value); 
int totaltests = Convert.ToInt16(mainresultnode.Attributes["total"].Value); 
int invalidtests = Convert.ToInt16(mainresultnode.Attributes["invalid"].Value); 
int inconclusivetests = Convert.ToInt16(mainresultnode.Attributes["inconclusive"].Value); 
0

我會從release notes for nunit 2.4.3引用:

控制檯亞軍現在使用中嘗試運行的測試中遇到的錯誤負面返回代碼。在測試失敗或錯誤本身得到正返回碼等於此類故障或錯誤的數量。

(強調我的)。這裏的含義是,如在bash中通常的那樣,返回0表示成功,非零表示失敗或錯誤(如上)。

HTH