由Nunit确定当前正在执行的测试用例

时间:2012-04-11 06:23:06

标签: c# nunit continuous-integration cruisecontrol.net

我正在使用Cruisecontrol构建代码并执行~200个测试用例。

由于某些测试用例,有时构建会挂起,我无法确定它是哪个测试用例。

是否可以在不修改当前测试用例代码的情况下打印当前正在执行的测试用例的名称?

如果是,怎么样?

2 个答案:

答案 0 :(得分:4)

我假设您正在使用NUnit进行测试。如果是这样,请使用<nunit>任务,而不是使用CruiseControl配置中的<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提交补丁以将以下行添加到“project \ core \ tasks \ NUnitArgument.cs”文件中也可能是好的:

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

或者您可以添加该行,构建CruiseControl并使用您自己的版本。

答案 1 :(得分:1)

TestContext.CurrentContext.Test.Name将有助于识别当前正在执行的测试用例。放

Console.WriteLine("Currently Executing Test Case : " + TestContext.CurrentContext.Test.Name);
带有SetUp属性的方法中的

将打印当前正在执行的UT。