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

5
我正在使用Cruisecontrol来构建代码和执行大约200个测试用例。
有时候由于某些测试用例,构建会挂起,但我无法确定是哪个测试用例导致的。
是否有可能在不修改当前测试用例代码的情况下打印出当前执行的测试用例名称?
如果可以,应该如何实现?
2个回答

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提交一个补丁,将以下行添加到“project\core\tasks\NUnitArgument.cs”文件中也是一个好主意:
line: 53            argsBuilder.AddArgument("/labels");

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

3

TestContext.CurrentContext.Test.Name可以帮助识别当前正在执行的测试用例。不要删除html标签。

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

在带有SetUp属性的方法中,将打印当前正在执行的单元测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接