Setting up NCover for NUnit in FinalBuilder [closed]

冷暖自知 提交于 2019-12-13 12:09:17

问题


Solved: Look at the bottom of this question for the working configuration


I am attempting to set up NCover for usage in my FinalBuilder project, for a .NET 4.0 C# project, but my final coverage output file contains no coverage data.

I am using:

  • NCover 3.3.2
  • NUnit 2.5.4
  • FinalBuilder 6.3.0.2004

All tools are the latest official as of today.

I've finally managed to coax FB into running my unit tests under NCover for the .NET 4.0 project, so I get Tests run: 184, ..., which is correct.

However, the final Coverage.xml file output from NCover is almost empty, and looks like this:

<?xml version="1.0" encoding="utf-8"?>
<!-- saved from NCover 3.0 Export url='http://www.ncover.com/' -->
<coverage profilerVersion="3.3.2.6211" driverVersion="3.3.2" exportversion="3" viewdisplayname="" startTime="2010-04-22T08:55:33.7471316Z" measureTime="2010-04-22T08:55:35.3462915Z" projectName="" buildid="27c78ffa-c636-4002-a901-3211a0850b99" coveragenodeid="0" failed="false" satisfactorybranchthreshold="95" satisfactorycoveragethreshold="95" satisfactorycyclomaticcomplexitythreshold="20" satisfactoryfunctionthreshold="80" satisfactoryunvisitedsequencepoints="10" uiviewtype="TreeView" viewguid="C:\Dev\VS.NET\LVK.IoC\LVK.IoC.Tests\bin\Debug\Coverage.xml" viewfilterstyle="None" viewreportstyle="SequencePointCoveragePercentage" viewsortstyle="Name">
  <rebasedpaths />
  <filters />
  <documents>
    <doc id="0" excluded="false" url="None" cs="" csa="00000000-0000-0000-0000-000000000000" om="0" nid="0" />
  </documents>
</coverage>

The output in FB log is:

...
***************** End Program Output *****************

Execution Time: 1,5992 s

Coverage Xml: C:\Dev\VS.NET\LVK.IoC\LVK.IoC.Tests\bin\Debug\Coverage.xml
NCover Success

My configuration of the FB step for NCover:

  • NCover what?: NUnit test coverage
  • Command: C:\Program Files (x86)\NUnit 2.5.4\bin\net-2.0\nunit-console.exe
  • Command arguments: LVK.IoC.Tests.dll /noshadow /framework:4.0.30319 /process=single /nothread
    • Note: I've tried with and without the /process and /nothread options
  • Working directory: %FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug
  • List of assemblies to profile: %FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug\LVK.IoC.dll
    • Note: I've tried just listing the name of the assembly, both with and without the extension.

The documentation for the FB step doesn't help, as it only lists minor sentences for each property, and fails to give examples or troubleshooting hints.

Since I want to pull the coverage results into NDepend to run build-time analysis, I want that file to contain the information I need.

I am also using TestDriven, and if I right-click the solution file and select "Test with NCover", NCover-explorer opens up with coverage data, and if I ask it to show me the folder with coverage files, in there is an .xml file with the same structure as the one above, just with all the data that should be there, so the tools I have is certainly capable of producing it.

Has anyone an idea of what I've configured wrong here?


Solved: The following configuration finally worked for me. It produces a code coverage basic statistics on the start results page for a build, with a link to a detailed report with everything.

Since I name my unit test projects the same as the project it tests, only with a .Tests suffix, I've excluded those from the code coverage. Also, I had to specifically include only my own assemblies (which all start with LVK.) otherwise I would get some assemblies loaded by the TeamCity runner, which slightly impacted my coverage statistics.

First, I installed latest of the tools (as of this edit):

  • NCover 3.4.8
  • TeamCity 5.1.2
  • NUnit 2.5.5

The configuration on the build-screen in TeamCity is then as follows:

  • Targets: Rebuild
  • Configuration: Debug
  • Platform: Any CPU
  • .NET Coverage Tool: NCover (3.x)
  • .NET Runtime: .NET Framework 4.0, Version: Native
  • Path to NCover 3: %system.ncover.v3.x64.path% (this is Windows 2008 Server R2 64-bit)
  • Additional NCover Arguments:

    //ias LVK.*
    //eas .*Tests
    //eas LVK\.CodeQuality
    //ea LVK\.CodeQuality\.IgnoreCodeCoverageAttribute
    
  • Additional NCover Reporting Arguments:

    //or FullCoverageReport:Html:{teamcity.report.path}
    
  • NUnit Runner: NUnit 2.5.5

  • .NET Runtime Platform: auto (MSIL), Version: 4.0
  • Run tests from: **\bin\Debug*Tests.dll

回答1:


As far as I know, NCover is not capable of covering tests for .NET 4.0. They announced a new version for .NET 4.0 but it is not there yet.

Find info on the subject here. Personally I have no experience with this task...

Update: They released NCover 3.4 with .NET 4.0 support. Perhaps You give it a try.




回答2:


I've found your answer from this thread: NUnit isn't running Visual Studio 2010 code

To the nunit-console-x86.exe.config file, under <configuration> add:

<startup>
  <requiredRuntime version="v4.0.30319" />
</startup>

Under <runtime> add

<loadFromRemoteSources enabled="true" />

Fixed it for me. I'm using TeamCity not FinalBuilder though.

I'm also using NCover 3.4.



来源:https://stackoverflow.com/questions/2689464/setting-up-ncover-for-nunit-in-finalbuilder

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!