【发布时间】:2009-09-22 19:05:26
【问题描述】:
我正在尝试让 Team City 构建我的 .NET 解决方案并运行我的 nUnit 测试。
我知道我可以修改单个项目并告诉他们始终运行单元测试。我不希望在 Visual Studio 中单击“构建”时运行单元测试,但我确实希望在 Team City 启动 msbuild 时运行单元测试任务。
我尝试了“msbuild solutionname.sln”,并将“BUILD”的目标和我的自定义构建标签“TEST”给了团队城市。但是,当针对 sln 解决方案调用 msbuild 时,找不到任何指定的目标。 所以, 我运行 msbuild 将我的解决方案转换为具有如下目标的项目:
<Target Name="Build">
<MSBuild Projects="@(BuildLevel0)" >
</Target>
我天真地以为我可以写一个这样的新任务:
<Target Name="BuildAndTest">
<CallTarget Targets="Build"/> <!-- This builds everything in solution -->
<CallTarget Targets="Test"/> <!-- DOES NOT WORK. This target exists in project that gets built by this solution -->
</Target>
nunit 目标如下所示:
<Target Name="Test" DependsOnTargets="Build" Condition=" '$(Configuration)' == 'Release'">
<NUnit Assemblies="$(OutputPath)\Tsa.BaseTest.dll" ContinueOnError="false" ToolPath="C:\Program Files\NUnit 2.5.2\bin\net-2.0\" DisableShadowCopy="true" OutputXmlFile="$(OutputPath)\nunit-results.xml" />
</Target>
如您所见,它引用了只有项目知道的 OutputPath——解决方案没有引用 $OutputPath,否则我只需将所有测试目标放入“解决方案项目”。
关于如何让它发挥作用的任何建议?
【问题讨论】: