我是一个小白同时使用OpenCover和ReportGenerator,我在了解如何让他们的工作挣扎了一下。 我用VS.NET 2012“专业”,这意味着我没有访问内置的单元测试覆盖率的工具。 我也有安装ReSharper的,但不想花钱购买“dotCover”其他实用工具
它看起来像OpenCover和ReportGenerator会做什么,我需要,我看这是一起下载的文件,但我错过了一些了解。 1日关闭,当我下载了双方的NuGet packges,应我的目标的项目是什么? 我有一个多层应用程序,所以我假设我的单元测试的项目是正确的,或者它甚至重要吗? 我看到的文档中,我只是在/ bin中指出使用命令行命令(我认为)的解决方案的,所以也许我甚至没有需要这些下载添加到任何特定项目(本来是一个测试工具)。 谁能告诉我,如果我有这正确吗?
一旦我安装它们,我试图让单元测试覆盖率指标,以及包装中附带的文档并不像我希望的那样清晰。 是否有良好的博客文章或通过使用这些工具一起拿到指标走链接?
你不需要把这些东西加到特定项目
我使用的报表生成和开盖生成测试覆盖率结果了。 这是剧本我用用opencover生成代码覆盖率
“C:\ Program Files文件(x86)的\ OpenCover \ OpenCover.Console.exe” -register:用户-target: “C:\ Program Files文件(x86)的\微软的Visual Studio 10.0 \ Common7 \ IDE \ mstest.exe” -targetargs : “/ noisolation / testcontainer:\” C:\\ BIN \调试\ .DLL \ “/resultsfile:C:\Reports\MSTest\.trx” -筛选: “+ []” -mergebyhash -output:C:\报告\ MSTest的\ projectCoverageReport.xml
请注意,如果你的论点需要转义引号,即与空格的参数传递给目标进程,那么你可以使用\“即-targetargs:‘\’C:\ Program Files文件\”
这是我用来运行报告生成的脚本。
C:\ ReportGenerator \ BIN \ ReportGenerator.exe -reports: “C:\报告\ MSTest的\ projectCoverageReport.xml” -targetdir: “C:\报告\代码覆盖率”
希望这可以帮助。
经过几年的使用这些开源工具,我终于创建了如何使用OpenCover和ReportCover生成单元测试覆盖率指标的综合性岗位。
该文章描述了如何创建.bat
文件,并执行以下操作所需的命令:
- 生成使用OpenCover单元测试度量的输出报告
- 生成
.htm
使用ReportGenerator报告 - 分析输出数据解释单元测试覆盖度量
使用OpenCover和ReportGenerator获得在.NET的单元测试代码覆盖率度量
感谢@atconway您的教程。 我已经更新您的.bat脚本一点,以便于以后的升级和工程变更。
总之,使用OpenCover与NUnit的,你必须添加到您的项目中的这些nugets:
- OpenCover
- NUnit.ConsoleRunner
- ReportGenerator由丹尼尔·帕尔梅
这里是.bat文件更新。 要运行它,只需编辑“设置”并保存脚本在项目的根.bat文件。
@echo off
REM ** Be sure to install these nugets:
REM ** NUnit.ConsoleRunner
REM ** OpenCover
REM ** ReportGenerator
REM **
REM ** All paths should be entered without quotes
REM ** SET TestResultsFileProjectName=CalculatorResults
SET TestResultsFileProjectName=<ANY_NAME>
REM ** SET DLLToTestRelativePath=Calculator\bin\Debug\MyCalc.dll
SET DLLToTestRelativePath=<VALID_PATH>
REM ** Filters Wiki https://github.com/opencover/opencover/wiki/Usage
REM ** SET Filters=+[Calculator]* -[Calculator]CalculatorTests.*
SET Filters=<VALID_FILTERS>
SET OpenCoverFolderName=OpenCover.4.6.519
SET NUnitConsoleRunnerFolderName=NUnit.ConsoleRunner.3.6.1
SET ReportGeneratorFolderName=ReportGenerator.2.5.6
REM *****************************************************************
REM Create a 'GeneratedReports' folder if it does not exist
if not exist "%~dp0GeneratedReports" mkdir "%~dp0GeneratedReports"
REM Remove any previous test execution files to prevent issues overwriting
IF EXIST "%~dp0%TestResultsFileProjectName%.trx" del "%~dp0%TestResultsFileProjectName%.trx%"
REM Remove any previously created test output directories
CD %~dp0
FOR /D /R %%X IN (%USERNAME%*) DO RD /S /Q "%%X"
REM Run the tests against the targeted output
call :RunOpenCoverUnitTestMetrics
REM Generate the report output based on the test results
if %errorlevel% equ 0 (
call :RunReportGeneratorOutput
)
REM Launch the report
if %errorlevel% equ 0 (
call :RunLaunchReport
)
exit /b %errorlevel%
:RunOpenCoverUnitTestMetrics
"%~dp0packages\%OpenCoverFolderName%\tools\OpenCover.Console.exe" ^
-register:user ^
-target:"%~dp0packages\%NUnitConsoleRunnerFolderName%\tools\nunit3-console.exe" ^
-targetargs:"--noheader \"%~dp0%DLLToTestRelativePath%\"" ^
-filter:"%Filters%" ^
-mergebyhash ^
-skipautoprops ^
-excludebyattribute:"System.CodeDom.Compiler.GeneratedCodeAttribute" ^
-output:"%~dp0GeneratedReports\%TestResultsFileProjectName%.xml"
exit /b %errorlevel%
:RunReportGeneratorOutput
"%~dp0packages\%ReportGeneratorFolderName%\tools\ReportGenerator.exe" ^
-reports:"%~dp0GeneratedReports\%TestResultsFileProjectName%.xml" ^
-targetdir:"%~dp0GeneratedReports\ReportGenerator Output"
exit /b %errorlevel%
:RunLaunchReport
start "report" "%~dp0GeneratedReports\ReportGenerator Output\index.htm"
exit /b %errorlevel%
它是配置opencover多个测试容器地狱。
使用此我的智能PowerShell脚本,它可以给你一些想法。
https://github.com/rpokrovskij/opencover4vs.ps1/blob/master/opencover4vs.ps1
您需要配置两个重要的事情:如何找到你的测试DLL和其命名空间包含到输出。 我做这种方式:
$TestDllsPatterns = @(,'*\bin\Debug\Vse.*.Test.dll')
$TestableCodeNamespacePatterns = @(,'*')
请注意,我的测试从前缀Vse包含开始。 您需要Debug\Prefix
键从文件夹一样过滤掉核心NUnit的测试Debug\netcore1.1\Vse
。
文章来源: How do I use OpenCover and ReportGenerator to view Unit Test Coverage Results?