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

本文关键字:执行 测试用例 Nunit 通过 | 更新日期: 2023-09-27 18:30:46

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

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

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

如果是,如何?

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

我假设您正在使用 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 提交补丁以将以下行添加到"project''core''tasks''NUnitArgument.cs"文件中也可能很好:

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

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

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

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

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