atc*_*way 38 .net unit-testing nuget-package opencover reportgenerator
我是一个使用OpenCover和ReportGenerator的菜鸟,我在理解如何让它们工作方面有点挣扎.我正在使用VS.NET 2012'Professional',这意味着我无法访问内置的单元测试覆盖工具.我也安装了ReSharper,但不想在'dotCover'中支付另一个实用程序
看起来OpenCover和ReportGenerator会做我需要的工作,我会看到同时下载的文档,但我缺少一些理解.第一关,当我为两者下载nuget包时,我的目标项目应该是什么?我有一个多层应用程序,所以我假设我的单元测试项目是正确的,或者甚至是否重要?我在文档中看到,我只是使用命令行命令指向/ bin(我认为)解决方案,所以也许我甚至不需要将这些下载添加到任何特定项目(可能是测试工具) ).有人可以告诉我,如果我有这个正确吗?
一旦我安装了它们,我就会尝试获得单元测试覆盖率指标,并且程序包附带的文档并不像我希望的那样清晰.是否有任何好的博客文章或链接一起使用这些工具来获取指标?
Son*_*yar 45
您不需要将这些添加到特定项目
我使用报告生成器和打开封面来生成测试覆盖率结果.这是我用来使用opencover生成codecoverage的脚本
"C:\ Program Files(x86)\ OpenCover\OpenCover.Console.exe"-register:user -target:"C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\Common7\IDE\mstest.exe"-targetargs :"/ noisolation/testcontainer:\"C:\\ bin\Debug\.dll \"/ resultfile:C:\ Reportport\MSTest\.trx"-filter:"+ [ ] "-mergebyhash -output:C:\报告\ MSTest的\ projectCoverageReport.xml
请注意,如果您的参数需要转义引号,即将带有空格的参数传递给该目标进程,那么您可以使用\"ie -targetargs:"\"c:\ program files \"
这是我用来运行报告生成器的脚本.
C:\ ReportGenerator\bin\ReportGenerator.exe -reports:"C:\ Reports\MSTest\projectCoverageReport.xml"-targetdir:"C:\ Reports\CodeCoverage"
希望这可以帮助.
atc*_*way 13
经过几年使用这些开源工具,我终于创建了一篇关于如何使用OpenCover和ReportCover生成单元测试覆盖率指标的综合文章.
该文章描述了如何创建.bat
文件以及执行以下操作所需的命令:
.htm
使用ReportGenerator 生成报告使用OpenCover和ReportGenerator在.NET中获取单元测试代码覆盖率指标
感谢@atconway为您的教程.我稍微更新了你的.bat脚本,以简化将来的升级和项目更改.
总而言之,要将OpenCover与NUnit一起使用,您必须向项目中添加以下内容:
这里是更新的.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%
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33446 次 |
最近记录: |