0

言归正传,TeamCity .NET NUnitLauncher 可以处理 Microsoft csproj 文件吗?

我问这个问题是因为以下原因。

我有一个 NANT 构建脚本。在这个脚本中,我有许多使用 nunit-console.exe(随 NUnit v2.5.2 提供)的测试。

我的 Nant 构建文件中的一个测试示例是:

<target name="x.Commons.Tests" depends="xCore">
<exec program="${nunit-console.exe}" commandline="${nunit-console.args} Core\x.Commons.Tests\x.Commons.Tests.csproj" failonerror="${nunit-console.failonerror}"/>
 </target>

FailOnError 设置为 false,并且 nunit-console.args 设置为 '/nologo'。

当我在本地机器上运行这些测试时,我得到了测试输出。但是,当我指示 TeamCity 构建我的 NAnt 构建文件并指示它处理测试目标时,我没有得到 TeamCity 的测试输出。我可以在日志中看到 nunit-colsole.exe 正在生成测试结果输出,但我在 TeamCity 仪表板中没有看到这一点。

在阅读之后,我发现一些文章表明需要额外的步骤才能将此输入输入 TeamCity。因此,我将测试修改为:

    <target name="x.Configuration.Tests" depends="xCore">
  <mkdir dir="C:\Tools\NUnit\bin\net-2.0\addins"/>
  <copy file="${teamcity.dotnet.nunitaddin}-2.5.0.dll" todir="C:\Tools\NUnit\bin\net-2.0\addins"/>
  <copy file="${teamcity.dotnet.nunitaddin}-2.5.0.pdb" todir="C:\Tools\NUnit\bin\net-2.0\addins"/>
  <exec program="${nunit-console.exe}" commandline="${nunit-console.args} Core\x.Configuration.Tests\x.Configuration.Tests.csproj" failonerror="${nunit-console.failonerror}"/>
 </target>

请注意,我还确保标签包含“插件”条目。

但是,和以前一样,我可以看到测试正在运行,因为 nunit-console.exe 在日志中显示了它的结果,但是我没有得到 TeamCity 的输出。

对我的问题的回答或任何帮助将不胜感激!

4

2 回答 2

1

我们这样做的方式是利用 TeamCity 自动获取 .csproj 文件中的 NUnit 测试的能力。

  • 首先,您需要安装MSBuild 社区任务
  • 然后,按以下方式设置您的 .csproj 文件:

    • 在 <Project> 之后立即添加

      <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

    • 创建一个项目组:

      <ItemGroup> <TestAssembly Include="path/to/binary.dll" /> </ItemGroup>

    • 创建一个 NUnit 目标:

      <Target Name="NUnit"> <NUnit Assemblies="@(TestAssembly)" /> </Target>

  • 然后,在 TeamCity 中,在项目设置的“Runner”部分中,选择MSBuild作为运行器,并在Targets字段中指定buildnunit作为目标

    目标:构建 nunit

TeamCity 应该在下一次构建时自动获取单元测试。

于 2009-11-05T12:06:24.503 回答
1

采用

<copy file="${teamcity.dotnet.nunitaddin}-2.5.2.dll" todir="C:\Tools\NUnit\bin\net-2.0\addins"/>
<copy file="${teamcity.dotnet.nunitaddin}-2.5.2.pdb" todir="C:\Tools\NUnit\bin\net-2.0\addins"/>

NUnit 版本的 TeamCity 插件应与 NUnit 版本匹配。请检查您的 TeamCity 版本是否支持 NUnit 2.5.2 或下载更新的版本。

于 2009-11-06T12:05:13.110 回答