¿Cómo uso OpenCover y ReportGenerator para ver los Resultados de la Cobertura de Pruebas Unitarias?


Soy un novato en el uso de OpenCover y ReportGenerator y estoy luchando un poco en la comprensión de cómo conseguir que funcionen. Estoy usando VS.NET 2012 'Profesional' lo que significa que no tengo acceso a las herramientas de cobertura de prueba unitaria integradas. También tengo ReSharper instalado, pero no quiero pagar por otra utilidad en 'dotCover'

Parece que OpenCover y ReportGenerator harán lo que necesito y veo la documentación que se descargó junto, pero me falta algo comprensión. 1 de descuento, cuando descargue los paquetes nuget para ambos, ¿cuál debería ser mi proyecto objetivo? Tengo una aplicación de múltiples capas, así que asumo que mi proyecto de prueba de unidad es correcto, o incluso importa? Veo en la documentación, solo estoy apuntando al / bin (creo) de una solución que usa comandos de línea de comandos, así que tal vez ni siquiera necesité agregar estas descargas a ningún proyecto en particular (podría haber sido un arnés de prueba). ¿Puede alguien decirme si tengo esto correcto?

Una vez que los tenga instalado, estoy tratando de obtener métricas de cobertura de prueba unitaria, y los documentos que vienen con el paquete no son tan claros como esperaba. ¿Hay buenas publicaciones de blog o enlaces que caminan a través de estas herramientas juntas para obtener las métricas?

Author: atconway, 2013-05-16

4 answers

No es necesario agregar estos a un proyecto en particular

Utilizo report generator y open cover para generar resultados de cobertura de pruebas también. Este es el script que uso para generar el codecoverage usando opencover

"C:\Program Files (x86)\OpenCover\OpenCover.Consola.exe" - registro: usuario-target:"C:\Program Archivos (x86)\Microsoft Visual Studio 10.0\Common7\IDE \ mstest.exe " - targetargs:" / noisolation / testcontainer:\"C:\\bin\Debug\.DLL\" / resultsfile: C: \ Reports\MSTest\.trx" - filtro:"+[]" -mergebyhash-output: C: \ Reports\MSTest\projectCoverageReport.xml

Tenga en cuenta que si su argumento necesita escapar de comillas, es decir, pasar argumentos con espacios a ese proceso de destino, entonces puede usar \ " i. e.- targetargs:"\ " c:\program archivos\"

Este es el script que uso para ejecutar report generator.

C:\ReportGenerator\bin\ReportGenerator.exe -informes:"C:\Reports\MSTest\projectCoverageReport.XML" - targetdir:"C:\Reports\CodeCoverage"

Espero que esto ayude.

 38
Author: SonalKhodiyar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-23 05:42:41

Después de varios años de usar estas herramientas de código abierto, finalmente creé una publicación completa sobre cómo usar OpenCover e ReportCover para generar métricas de cobertura de pruebas unitarias.

El post describe cómo crear el archivo .bat y los comandos necesarios para hacer lo siguiente:

  • Generar un informe de salida de métricas de prueba unitaria usando OpenCover
  • Generar un informe .htm utilizando ReportGenerator
  • Analizar los datos de salida para interpretar la cobertura de la prueba unitaria métricas

Usando OpenCover y ReportGenerator para obtener Métricas de Cobertura de Código de Pruebas Unitarias en. NET

 10
Author: atconway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-19 05:14:48

Gracias @atconway por tu tutorial. He actualizado tu .bat script un poco, para facilitar futuras actualizaciones y cambios de proyecto.

Resumiendo, para usar OpenCover con NUnit tienes que añadir a tu proyecto estos nugets:

  • OpenCover
  • [6] NUnit.ConsoleRunner
  • ReportGenerator por Daniel Palme

Y aquí se actualiza .bat file. Para ejecutarlo simplemente edite "configuración" y guarde el script como .archivo bat en la raíz de su proyecto.

@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%
 4
Author: Rob.Ak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-31 12:24:56

Es un infierno configurar opencover para múltiples contenedores de prueba.

Use este script my smart Powershell, puede darle algunas ideas.

Https://github.com/rpokrovskij/opencover4vs.ps1/blob/master/opencover4vs.ps1

Necesita configurar dos cosas principales : cómo encontrar sus DLL de prueba y qué espacios de nombres incluir en la salida. Lo hago de esta manera:

$TestDllsPatterns = @(,'*\bin\Debug\Vse.*.Test.dll')  
$TestableCodeNamespacePatterns = @(,'*') 

Tenga en cuenta que mis pruebas comienzan con el prefijo Vse. Necesitas la tecla Debug\Prefix para filtrar el núcleo NUnit pruebas de carpetas como Debug\netcore1.1\Vse.

 0
Author: Roman Pokrovskij,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-03 20:37:23