要切入追逐,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>
请注意,我还确保标记包含“addins”条目。
但是,和以前一样,我可以看到测试正在运行,因为nunit-console.exe会在日志中显示其结果,但我没有输出到TeamCity。
我的问题或任何帮助的答案将不胜感激!
答案 0 :(得分:1)
我们采用的方式是利用TeamCity在.csproj文件中自动获取NUnit测试的能力。
然后,按以下方式设置.csproj文件:
在&lt; Project&gt;
之后立即进行此操作&lt; Import Project =“$(MSBuildExtensionsPath)\ MSBuildCommunityTasks \ MSBuild.Community.Tasks.Targets”/&gt;
创建一个ItemGroup:
&LT;&的ItemGroup GT; &lt; TestAssembly Include =“path / to / binary.dll”/&gt; &LT; /&的ItemGroup GT;
创建NUnit目标:
&lt; Target Name =“NUnit”&gt; &lt; NUnit Assemblies =“@(TestAssembly)”/&gt; &LT; /目标&GT;
然后,在TeamCity中,在项目设置的“Runner”部分中,选择 MSBuild 作为跑步者,并在目标字段中指定构建和 nunit 作为目标
目标:构建nunit
TeamCity应该在下一次构建时自动获取单元测试。
答案 1 :(得分: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 Addin应与NUnit版本匹配。请检查TeamCity版本是否支持NUnit 2.5.2或下载更新的版本。