2012-04-11 107 views
5

我使用Cruisecontrol來構建代碼並執行〜200個測試用例。由Nunit確定當前正在執行的測試用例

有時由於某些測試用例,構建會掛起,我無法確定它是哪個測試用例。

是否可以在不修改當前測試用例代碼的情況下打印當前正在執行的測試用例的名稱?

如果是,如何?

回答

1

TestContext.CurrentContext.Test.Name將有助於識別當前正在執行的測試用例。把

Console.WriteLine("Currently Executing Test Case : " + TestContext.CurrentContext.Test.Name); 

在具有設置屬性的方法將打印當前正在執行的UT。

4

我假設你正在使用NUnit來做你的測試。如果是這樣,則不使用CruiseControl配置中的<nunit>塊,而是使用<exec>任務。在<buildArgs>元素中,包含/ labels命令行參數。這會將信息打印到服務器日誌中。

而不是使用:

<nunit> 
    <path>C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-console.exe</path> 
    <assemblies> 
     <assembly>C:\Projects\Personal\MyTestApp\MyTestApp.Tests\bin\Debug\MyTestApp.Tests.dll</assembly> 
    </assemblies> 
</nunit> 

用途:

<exec> 
    <executable>C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-console.exe</executable> 
    <buildArgs>/labels C:\Projects\Personal\MyTestApp\MyTestApp.Tests\bin\Debug\MyTestApp.Tests.dll</buildArgs> 
</exec> 

我知道這是不理想,但因爲它運行到日誌將打印每個測試。然後,您可以使用合併任務將nunit輸出的xml文件合併到構建日誌中。

嘗試使用ccnet控制檯應用程序首先執行此操作,以便您可以實時查看輸出。它應該可以幫助你看到你在找什麼。

它也可能是件好事補丁提交CruiseControl的下面一行添加到「項目\核心\任務\ NUnitArgument.cs」文件:

line: 53   argsBuilder.AddArgument("/labels"); 

或者您也可以添加這一行,構建CruiseControl並使用您自己的版本。