views:

1195

answers:

3

I currently have our build server set up with CruiseControl.Net running a build using MSBuild and then running unit tests using MSTest. The problem is I can't see the output of the unit tests in CC - I know they are being run because I can get the build to fail if I commit a failing test.

I have followed the online guides from http://blogs.blackmarble.co.uk/blogs/bm-bloggers/archive/2006/06/14/5255.aspx and http://www.softwarepassion.com/?p=89 but still having no luck.

My ccnet.config file contains

 <tasks>
   <msbuild>
     <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
     <workingDirectory>C:\CCBuilds</workingDirectory>
     <projectFile>Application.sln</projectFile>
     <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
     <targets>Build</targets>
     <timeout>900</timeout>
     <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
  </msbuild>  

  <exec>
   <executable>deleteTestLog.bat</executable>
   <baseDirectory>C:\CCBuilds</baseDirectory>
   <buildArgs></buildArgs>
   <buildTimeoutSeconds>30</buildTimeoutSeconds>
  </exec>

  <exec>
   <executable>C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\mstest.exe</executable>
   <baseDirectory>C:\CCBuilds</baseDirectory>
   <buildArgs>/testcontainer:UnitTests\bin\Debug\UnitTests.dll /runconfig:localtestrun.Testrunconfig /resultsfile:testResults.trx</buildArgs>
   <buildTimeoutSeconds>30</buildTimeoutSeconds>
  </exec>

 </tasks>

 <publishers>
  <merge>
   <files>
    <file>testResults.trx</file>
   </files>
  </merge>

  <xmllogger logDir="C:\Program Files\CruiseControl.NET\server\Checkin Build\Artifacts\buildlogs" />

 </publishers>

The log file in C:\Program Files\CruiseControl.NET\server\Checkin Build\Artifacts\buildlogs contains the unit test results, have I missed any steps?

+1  A: 

Did you configure your web dashboard with the correct xsl to format the outputs? There are two different versions of the XSL's (Summary and Report) for VSTS 2005 and 2008 as Microsoft changed the XML output drastically between the two versions. The changes were very good, just breaking changes.

Alex
By the way if you also want code coverage on those tests see herehttp://dontbreakthebuild.blogspot.com/2008/11/codecoverage-and-unittesting-on-ccnet.html
Alex
A: 

i made the following changes to get MSTest results output to be shown in CruiseControl.NET

1) For Dashboard - in dashboard.config added a reference to the Mstest 2008 xsl file under buildReportBuildPlugin

<xslFile>xsl\MsTestReport2008.xsl</xslFile>

2) For email - in ccservice.exe.config added the reference to the same xsl file under xslFiles section

<file name="xsl\MsTestSummary2008.xsl"/>
Dinesh Manne
I also had to restart IIS to get the dashboard.config to pick up the changes, but it worked for me.
Michael Joseph Kramer
A: 

For the Dashboard, I think you need to add the MSTest Summary in the xlsFiles, but add the MSTest Report build report plugin. That is,

  <buildReportBuildPlugin>
    <xslFileNames>
      <xslFile>xsl\MsTestSummary2008.xsl</xslFile>
    </xslFileNames>
  </buildReportBuildPlugin>
  <xslReportBuildPlugin description="MSTest Report" actionName="MSTESTReport" xslFileName="xsl\MsTestReport2008.xsl/>
</buildPlugins>

I tried adding MSTestReport on both but it didn't work, but the setting above did. Hope that helps...

Katleen