我是一个使用OpenCover和ReportGenerator的菜鸟,我在理解如何让它们工作方面有点挣扎.我正在使用VS.NET 2012'Professional',这意味着我无法访问内置的单元测试覆盖工具.我也安装了ReSharper,但不想在'dotCover'中支付另一个实用程序
看起来OpenCover和ReportGenerator会做我需要的工作,我会看到同时下载的文档,但我缺少一些理解.第一关,当我为两者下载nuget包时,我的目标项目应该是什么?我有一个多层应用程序,所以我假设我的单元测试项目是正确的,或者甚至是否重要?我在文档中看到,我只是使用命令行命令指向/ bin(我认为)解决方案,所以也许我甚至不需要将这些下载添加到任何特定项目(可能是测试工具) ).有人可以告诉我,如果我有这个正确吗?
一旦我安装了它们,我就会尝试获得单元测试覆盖率指标,并且程序包附带的文档并不像我希望的那样清晰.是否有任何好的博客文章或链接一起使用这些工具来获取指标?
要生成打开封面报告,我必须将debugType设置为Full.我在构建服务器上生成报告,因为如果覆盖范围没有达到某个阈值,我必须使构建失败.构建在发布模式下生成.在我的csproj文件中保持debugType Full有什么后果?它会降低生产性能吗?
如何添加过滤器以跳过命名空间/程序集中的某些类.例如:SYM.UI是基础组件,我想跳过SYM.UI.ViewModels.编写下面的过滤器,但它包括所有这些过滤器并没有满足我的要求:
+[SYM.UI*]* -[SYM.UI.ViewModels*]*
Run Code Online (Sandbox Code Playgroud)
请帮我纠正这个?
我正在尝试将三个单元测试项目(三个不同的dll)组合到一个OpenCover报告中.可能吗?我试图查看过滤器,但我在OpenCover Wiki网站上看不到足够的细节(示例).有人能说明我可以从哪里开始吗?
非常感谢!
我试图使用OpenCover(今天下载)来覆盖我的测试.这是我用过的命令行:
OpenCover.Console.exe -target:"c:\Programmes2\xunit\xunit.console.clr4.x86.exe" -targetargs:"""C:\Sources\Project\BackOffice.Tests\bin\Debug\BackOffice.Tests.dll"" /noshadow " -output:bo.coverage.xml -targetdir:"C:\Sources\Project\BackOffice.Tests\bin\Debug" -filter:+[*]*
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出
xUnit.net console test runner (32-bit .NET 4.0.30319.269)
Copyright (C) 2007-11 Microsoft Corporation.
xunit.dll: Version 1.9.0.1566
Test assembly: C:\Sources\Project\BackOffice.Tests\bin\Debug\BackOffice.Tests.dll
31 total, 0 failed, 0 skipped, took 2.760 seconds
Committing...
No results - no assemblies that matched the supplied filter were instrumented
this could be due to missing PDBs for the assemblies that match the filter
please review the output file and refer to the Usage guide (Usage.rtf)
Run Code Online (Sandbox Code Playgroud)
生成的报告始终相同:
<?xml version="1.0" encoding="utf-8"?> …Run Code Online (Sandbox Code Playgroud) 我正在使用OpenCover为Web应用程序生成功能测试覆盖率.这些测试运行时间相当长(3个多小时),因此我们将它们分成多个并行运行的测试.因此,有六个,而不是单一的报道报告.
为了将这些覆盖率报告导入SonarQube,我需要找到一种方法将它们组合成一个超级报告.ReportGenerator支持将多个报表合并为一个,但会创建HTML输出,这不是SonarQube可以使用的.
此时我的选择是
我还缺少其他任何选择吗?
我正在使用OpenCover来确定简单C#项目的代码覆盖率.
虽然我可以看到MSTest运行单元测试(并且成功),但生成的报告是空的.
这是我使用的命令:
opencover.console.exe -register -arch:32
-target:"%VSINSTALLDIR%\Common7\IDE\mstest.exe"
-targetargs:"/testcontainer:calculatortest.dll"
-filter:+[calculator.dll]* -output:coverage.xml
Run Code Online (Sandbox Code Playgroud)
Microsoft (R) Test Execution Command Line Tool Version 10.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Loading calculatortest.dll...
Starting execution...
Results Top Level Tests
------- ---------------
Passed CalculatorTest.StatisticsTest.AddOccurrenceTest
Passed CalculatorTest.StatisticsTest.AvgTest
2/2 test(s) Passed
Summary
-------
Test Run Completed.
Passed 2
---------
Total 2
Results file: e:\Users\erno\Documents\Visual Studio 2010\Projects\CodeStatistics\CalculatorTest\bin\Debug\TestResults\erno_ERNO01 2011-07-01 14_27_06.trx
Test Settings: Default Test Settings
Visited Classes 0 of 0 (NaN)
Visited Methods 0 of …Run Code Online (Sandbox Code Playgroud) 试图打开如下打开的封面
opencover.console.exe -target:"C:\ Users\rkapiset\Downloads\xunit-1.8\xunit.console.clr4.x86.exe"-targetargs:"""E:\ Office\CRM\dotnet\1 - UI\EYC.CRM.UI.Tests\bin\Debug\EYC.CRM.UI.Tests.dll""" - filter:+ [EYC]*-output:coverage.xml
以下是结果
共61次,3次失败,0次跳过,耗时1.674秒
访问次数0 of 0(NaN)
访问方法0 of 0(NaN)
访问点0 of 0(NaN)未
访问类未
访问的方法
我有什么不对的提示?提前致谢.
我们当前正在运行一个运行nunit3.console.exe的OpenCover会话.
我们的命令行如下:
"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -output:"%CD%\opencover.xml" -register:user -target:"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" -targetargs:"Solution\our-solution-file.sln --config=Debug --result=%CD%\TestResult.xml;format=nunit2"
exit 0
Run Code Online (Sandbox Code Playgroud)
由于两者之间的仪器,我们期望这比我们的正常单元测试慢,但不是那么多.
没有代码覆盖,单元测试需要1h.目前,通过代码覆盖,我们已经花了3天23小时,我们认为我们只执行了10%.
这些结果应该在导出后输出到SonarQube.
我们可以做些什么来提高速度(除了升级运行测试的计算机,无论如何都可能会这样做)?
喜欢不太详细的结果,......?我们最感兴趣的是代码覆盖率,持续时间和其他东西对我们来说不是很有趣.甚至使用OpenCover之外的其他工具.
我不知道这是否重要,但这条线是由詹金斯执行的.
在使用OpenCover生成覆盖率报告(然后使用ReportGenerator生成HTML报告)时,我试图排除框架生成的类.特别是,由服务引用在项目命名空间下生成的类.
我用来生成XML文件的命令如下所示:
OpenCover.Console.exe -register:user "-target:MyProject.Tests.dll" -targetargs:"/testcontainer:MyContainer" -output:coverage.xml -mergebyhash -filter:-*.AWebService.*
Run Code Online (Sandbox Code Playgroud)
我也试图通过文件排除:
OpenCover.Console.exe -register:user "-target:MyProject.Tests.dll" -targetargs:"/testcontainer:MyContainer" -output:coverage.xml -mergebyhash -excludebyfile:*Reference.cs
Run Code Online (Sandbox Code Playgroud)
但服务引用类仍显示在XML文件中.
有没有办法只排除Visual Studio生成的特定类?