如何在NUnit测试SESSION的开头执行代码(而不是夹具设置)

时间:2014-04-25 14:53:33

标签: nunit

我正在执行一系列包含测试的大量灯具。每个测试中都有代码,用于根据NUnit属性将任何错误记录到文件中。执行完成后,该文件包含一个漂亮格式的所有错误,以便发送给顾问。

首先,我需要一个钩子来删除文件的先前副本,以便可以新生成文件。如果这是一个夹具中的一系列测试,那将是一个芯片 - 将其放入夹具设置中。但是我需要这几十个测试夹具来共享一个公共文件,所以把它放在夹具设置中并不起作用。

其次,这一切都只是重新发挥作用...如果有一些非常棒的NUnit标准用于将结果分流到备用输出,我很乐意听到这一点。

TIA。

1 个答案:

答案 0 :(得分:0)

最简单的方法是将套件生成的许多NUnit文件合并为一个。 This answer链接到创建的a library以作为MSBuild任务进行合并。

第一步是编译该库(当我尝试时没有问题)并将构建的程序集放在具有以下MSBuild项目(或类似的东西)的目录中:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
                 ToolsVersion="4.0"
                 DefaultTargets="UnitTest">
  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\15below.NUnitMerger.dll" 
             TaskName="FifteenBelow.NUnitMerger.MSBuild.NUnitMergeTask" />
  <Target Name="UnitTest">
    <ItemGroup>
      <ResultsFiles Include="$(MSBuildProjectDirectory)\nunit-result*.xml" />
    </ItemGroup> 
    <NUnitMergeTask FilesToBeMerged="@(ResultsFiles)"
                    OutputPath="$(MSBuildProjectDirectory)\TestResult.xml" />
  </Target>
</Project>

在这里,我假设您的文件设置在同一目录中,即:

enter image description here

NUnit结果在目录中后,从此目录运行MSBuild以获取输出:

msbuild merge.msbuildproj

生成的文件(此处为TestResult.xml)与NUnit的普通Xml输出格式相同,但输入文件中包含所有test-suite type=Assembly个节点。