这是我第一次设置teamcity,我遇到了一些显示结果的问题。我想要一个运行NAnt脚本的构建步骤。该脚本应该通过PartCover运行我的单元测试并显示结果。结果应该是:
但我真的不知道如何设置脚本或设置,甚至不知道我应该在哪里查看这些结果(我猜的工件部分?)。使用下面的脚本,一切运行正常,但我无法查看任何报告。
<project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<loadtasks assembly="C:\Program Files\Gallio\bin\Gallio.NAntTasks.dll" />
<target name="test">
<gallio result-property="exitCode" failonerror="false" >
<runner-extension value="TeamCityExtension,Gallio.TeamCityIntegration" />
<files>
<include name="%system.teamcity.build.checkoutDir%\Trunk\MyLibrary.Testing\bin\Release\MyLibrary.Testing.dll"/>
</files>
</gallio>
<fail if="${exitCode != '0'}" >One or more tests failed. Please check the log for more details</fail>
</target>
</project>
对于.Net Coverage部分,我选择了PartCover(2.2或2.3),但我在PartCover参数中没有任何内容(我应该吗?)
感谢您的帮助!
答案 0 :(得分:0)
根据我的经验,你不应该直接运行Gallio。相反,您应该运行PartCover并在其命令行参数中指定Gallio作为目标。 你可以在这里找到关于Nant + PartCover的一些建议: Integrating PartCover.NET with NAnt
答案 1 :(得分:0)
我遇到了与NAnt的问题,并决定只使用MSBuild。 MSBuild更易于使用,并提供了非常具有描述性的错误消息。 (我也发现了我们的NCover许可证,所以也使用了它)。这是我感兴趣的人的脚本。我从网上的各个地方找到了它的代码。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<CoverageDir>.\Tests\Output\Coverage</CoverageDir>
<CoverageFilesDir>.\Tests\Output\Coverage\files</CoverageFilesDir>
<BinDir>Testing\bin\x86\Release</BinDir>
<NCoverDir>C:\Program Files (x86)\NCover</NCoverDir>
<GallioDir>C:\Program Files (x86)\Gallio\bin</GallioDir>
</PropertyGroup>
<UsingTask TaskName="NCover" AssemblyFile="$(NCoverDir)\Build Task Plugins\NCover.MSBuildTasks.dll" />
<UsingTask TaskName="NCoverExplorer" AssemblyFile="$(NCoverDir)\Build Task Plugins\NCoverExplorer.MSBuildTasks.dll"/>
<!-- Specify the tests assemblies -->
<ItemGroup>
<TestAssemblies Include="$(BinDir)\library.Testing.dll" />
<CoverageAssemblies Include="$(BinDir)\library.dll" />
</ItemGroup>
<Target Name="Coverage">
<Message Text="Creating $(CoverageFilesDir)" />
<MakeDir Directories="$(CoverageFilesDir)"/>
<Message Text="##-------------------- Running Coverage Reports --------------------##" />
<Message Text="Coverage Assemblies @(TestAssemblies)" />
<!--Run NCover to gather coverage information-->
<NCover
ToolPath="$(NCoverDir)"
TestRunnerExe="$(GallioDir)\Gallio.Echo.exe"
TestRunnerArgs="%(TestAssemblies.FullPath)"
IncludeAssemblies="@(CoverageAssemblies)"
LogFile="$(CoverageFilesDir)\%(TestAssemblies.Filename)-ncover.log"
RegisterProfiler="false"
CoverageFile="$(CoverageFilesDir)\%(TestAssemblies.Filename)-coverage.xml"/>
<CreateItem Include="$(CoverageFilesDir)\*-coverage.xml">
<Output TaskParameter="Include" ItemName="CoverageReports"/>
</CreateItem>
<!--Generate coverage report-->
<NCoverExplorer
ToolPath="$(NCoverDir)"
ProjectName="Library Coverage"
ReportType="4"
Sort="CoveragePercentageAscending"
Filter="None"
OutputDir="$(CoverageDir)"
XmlReportName="CoverageReport.xml"
HtmlReportName="CoverageReport.html"
ShowExcluded="True"
SatisfactoryCoverage="15"
FailMinimum="False"
CoverageFiles="@(CoverageReports)"/>
<!-- In case one of the tests fails, make sure to stop TypeMock and unregister NCover. -->
<OnError ExecuteTargets="test-finally"/>
</Target>
<!-- Stopping unregistering NCover is a separate target because it has to happen -->
<!-- regardless of success or failure of the unit tests. Like the "finally" in a "try/finally" block. -->
<Target Name="test-finally">
<Exec Command="regsvr32 /u /s "$(NCoverDir)\CoverLib.dll"" ContinueOnError="true"/>
</Target>
</Project>