2012-04-11 110 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并使用您自己的版本。