本文转自:http://www.cnblogs.com/kingkoo/archive/2008/02/26/1081474.html
CruiseControl做的确实不错, 大部分功能只要配置一下两个配置文件就可以了, 一个是 ccnet.config ,一个是dashboard.config,如果要设置服务器发送构建邮件的话,还要用到一个文件ccnet.exe.config,这里我都是缺省用ccnet.exe启动的服务器,所以服务器配置要用那个ccnet.exe.config配置.
NUnit配置段
CruiseControl.net与nunit集成有几个要点:
在ccnet.config的task任务中添加以下任务
<nunit path="C:/Program Files/NUnit 2.4.3/bin/nunit-console.exe" > <assemblies> <assembly>C:/workspace/test1/DotNet/Tests/bin/Debug/Tests.dll</assembly> </assemblies> </nunit>
msbuild配置段
我在task的构建用的是msbuild,如果工程很简单的话可以直接用vs自带的构建方法,如下
<devenv> <solutionfile>C:/workspace/test1/DotNet/Exist.sln</solutionfile> <configuration>Debug</configuration> <buildtype>Build</buildtype> <executable>C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/devenv.com</executable> </devenv>
而总得msbuild应该是像以下的样子:
<msbuild> <executable>C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/MSBuild.exe</executable> <workingDirectory>C:/workspace/test1/DotNet</workingDirectory> <projectFile>Projectsln</projectFile> <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs> <targets ></targets> <timeout>15</timeout> <logger>C:/Program Files/CruiseControl.NET/server/ThoughtWorks.CruiseControl.MSBuild.dll</logger> </msbuild>
这样msbuild就会编译整个solution.
NCover集成
需要集成NCover,需要先在要集成的工程文件如test.csproj文件上加一个头,让build任务能调用NCover,
<UsingTask TaskName="NCoverExplorer.MSBuildTasks.NCoverExplorer" AssemblyFile="C:/Program Files/NCover/Build Task Plugins/NCoverExplorer.MSBuildTasks.dll"/> <UsingTask TaskName="NCoverExplorer.MSBuildTasks.NCover" AssemblyFile="C:/Program Files/NCover/Build Task Plugins/NCoverExplorer.MSBuildTasks.dll"/> <UsingTask TaskName="NCoverExplorer.MSBuildTasks.NUnitProject" AssemblyFile="C:/Program Files/NCover/Build Task Plugins/NCoverExplorer.MSBuildTasks.dll"/>
然后在此工程文件中加入NCover的msbuild的task:
<Target Name="Coverage"> <NCover ToolPath="C:/Program Files/NCover" WorkingDirectory="$(MSBuildProjectDirectory)/bin/Debug" CommandLineExe="nunit-console.exe" CommandLineArgs="Tests.dll" LogFile="Coverage.log" CoverageFile="Coverage.xml" ContinueOnError="true" /> </Target> <ItemGroup> <MySourceFiles Include="CoverageReport.xsl"/> </ItemGroup> <Target Name="CreateReport"> <NCoverExplorer ToolPath="C:/Program Files/NCover" ProjectName="$(MSBuildProjectDirectory)/bin/debug" OutputDir="$(MSBuildProjectDirectory)" ReportType="ModuleClassSummary" XmlReportName="CoverageSummary.xml" CoverageFiles="Coverage.xml" /> <Copy SourceFiles="@(MySourceFiles)" DestinationFolder="C:/Program Files/CruiseControl.NET/server/xsl" /> </Target>
NCover会先生成一个Coverage.xml的报告文件,然后会根据这个文件生成CoverageSummary.xml,并且会有一个套用格式的CoverageReport.xsl. 生成了报告后,需要在ccnet.config中的publishers中的merge任务将报表merge到CruiseControl的log文件中:
<merge> <files> <file>C:/workspace/test1/DotNet/Tests/CoverageSummary.xml</file> </files> </merge>
并且想要在webdashborad中显示这个coverage的报告的时候,需要在dashborad.config中加入build出来的xsl文件:
<buildReportBuildPlugin> <xslFileNames> <xslFile>xsl/CoverageReport.xsl</xslFile> </xslFileNames></buildReportBuildPlugin>
然后还需要加入这段:
<xslReportBuildPlugin description="CoverageReport" actionName="NCoverBuildReport" xslFileName="xsl/CoverageReport.xsl" />
还有一点 :
<buildReportBuildPlugin> <xslFileNames> <xslFile>xsl/header.xsl</xslFile> <xslFile>xsl/modifications.xsl</xslFile> <xslFile>xsl/compile.xsl</xslFile> <xslFile>xsl/compile-msbuild.xsl</xslFile> <xslFile>xsl/MsTestSummary.xsl</xslFile> <xslFile>xsl/unittests.xsl</xslFile> <xslFile>xsl/tests.xsl</xslFile> <xslFile>xsl/CoverageReport.xsl</xslFile> <xslFile>xsl/SimianSummary.xsl</xslFile> <xslFile>xsl/fitnesse.xsl</xslFile> </xslFileNames> </buildReportBuildPlugin>
上面的就是在webdashboard中左边导航菜单的内容,可以根据需要进行配置,配置好后IIS要重启,不然看不到最新的配置内容,在dos窗口下用命令iisreset重启后就可以看到了。