代码之家  ›  专栏  ›  技术社区  ›  Ben Smith

TeamCity的.NET Nunitaddin可以处理csproj文件吗?

  •  0
  • Ben Smith  · 技术社区  · 16 年前

    要切入主题,TeamCity.NET NunitLauncher可以处理Microsoft CSproj文件吗?

    我问这个问题是因为以下几点。

    我有一个南特建筑脚本。在这个脚本中,我有许多使用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>
    

    请注意,我还确保标记包含一个“addins”条目。

    但是,和以前一样,我可以看到测试正在工作,因为nunit-console.exe在日志中显示其结果,但是我没有得到任何输出到teamcity。

    请回答我的问题,否则我们将不胜感激!

    2 回复  |  直到 16 年前
        1
  •  1
  •   Eugene Petrenko    16 年前

    使用

    <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"/>
    

    teamcity addin for nunit版本应与nunit版本匹配。请检查您的TeamCity版本是否支持Nunit 2.5.2或下载更新的版本。

        2
  •  1
  •   Tamas Czinege    16 年前

    我们的方法是利用TeamCity在.csproj文件中自动获取nunit测试的能力。

    • 首先,您需要安装 MSBuild Community Tasks .
    • 然后,按以下方式设置.csproj文件:

      • 在<项目之后立即进行此操作>

        <import project=“$(msbuildExtensionsPath)\msbuildCommunityTasks\msbuild.community.tasks.targets”/>

      • 创建项组:

        <项目组& GT; <testaassembly include=“path/to/binary.dll”/> </itemgroup>

      • 创建一个nunit目标:

        <target name=“nunit”> <nunit assembly=“@(testalassembly)”/> & /目标& GT;

    • 然后,在TeamCity中,在项目设置的“运行者”部分,选择 MSBube 作为跑步者和 目标 字段同时指定 建造 非单位 作为目标

      目标: 构建单元

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