5

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

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

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

如果是,如何?

4

2 回答 2

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

于 2012-04-25T16:18:34.257 回答
2

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

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

带有 SetUp 属性的 in 方法将打印当前正在执行的 UT。

于 2013-01-07T12:19:27.987 回答