web-dev-qa-db-fra.com

Comment mesurer la couverture de code dans les projets ASP.NET Core dans Visual Studio?

Je souhaite mesurer la couverture de code de mes tests XUnit-Tests dans une application ASP.NET Core. Tooling for .NET Core dans Visual Studio 2015 est l'aperçu 2 et la couverture de code ne fonctionne pas jusqu'à présent. 

Le billet de blog http://dotnet Thoughts.net/measuring-code-coverage-of-aspnet-core-applications-using-opencover/ de février montre une solution de contournement en utilisant la ligne de commande de couverture ouverte. Je recherche un moyen plus intégré dans Visual Studio. 

Quelqu'un a-t-il entendu parler d'un moyen plus efficace/plus intégré de mesurer la couverture de code en combinaison avec XUnit?

13
Ralf Bönning

Je viens d'essayer la version 2016.3 EAP 4 de ReSharper (aperçu de l'accès anticipé). Outre l'exécution du test unitaire, dotCover renvoie maintenant des informations sur la couverture de code pour mes projets de test .net.

0
Ralf Bönning

Ajoutez le package NuGetMicrosoft.CodeCoverage 1.0.1 à votre project.json.

Je travaille sur le modèle pour Asp.NET et en ce moment, je travaille sur les tests unitaires, j'ai donc vu votre message. Vous pouvez voir projet/configuration ici .

6
adenial

Disclaimer: Ces étapes ont été données à partir de Mesure de la couverture d'ASP.NET avec OpenCover - DotNetThoughts .

Même si l’affiche parle de ce site, j’ai pensé qu’il serait toujours préférable d’avoir ces étapes ici pour la prospérité.

NOTE: Ces instructions, bien que adaptées à un système d'exploitation Windows, devraient facilement fonctionner pour tout système d'exploitation pris en charge par OpenCover et ReportGenerator.

  1. Créez votre site Web ASP.NET Core MVC
  2. Assurez-vous que global.json a "test" dans les projets
  3. Faites un clic droit sur le dossier de test dans la solution et ajoutez un nouveau projet
  4. Assurez-vous que le type de projet est une bibliothèque .NET Core Class
  5. Ajoutez les éléments suivants à votre nœud de dépendances project.json:
    • "dotnet-test-xunit": "2.2.0-preview2-build1029",
    • "xunit": "2.2.0-beta3-build3402"
    • "Microsoft.CodeCoverage": "1.0.2"
  6. Ajoutez ce qui suit à votre projet.json sous la version
    • "testRunner": "xunit",
  7. Ecrivez vos tests unitaires
  8. Télécharger OpenCover et Générateur de rapports
  9. Installer OpenCover
  10. Extrayez le générateur de rapports dans le répertoire d'installation OpenCover dans un dossier appelé générateur de rapports
  11. Créez un fichier BAT dans votre projet et appelez-le cover.bat
  12. Ajoutez le contenu suivant:
@echo off

SET dotnet="C:\Program Files\dotnet\dotnet.exe"  
SET opencover="C:\Program Files (x86)\OpenCover\OpenCover.Console.exe"
SET reportgenerator="C:\Program Files (x86)\OpenCover\ReportGenerator\ReportGenerator.exe"

SET targetargs="test"  
SET filter="+[*]NAMESPACE.* -[*.Test]* -[xunit.*]* -[FluentValidation]*"  
SET coveragefile=Coverage.xml  
SET coveragedir=Coverage

REM Run code coverage analysis  
%opencover% -oldStyle -register:user -target:%dotnet% -output:%coveragefile% -targetargs:%targetargs% -filter:%filter% -skipautoprops -hideskipped:All

REM Generate the report  
%reportgenerator% -targetdir:%coveragedir% -reporttypes:Html;Badges -reports:%coveragefile% -verbosity:Error

REM Open the report  
start "report" "%coveragedir%\index.htm"
  1. Remplacez NAMESPACE par votre espace de noms de projets.
  2. Si vous avez plusieurs projets, dupliquez la regex +[*]NAMESPACE.* autant de fois que nécessaire pour chaque espace de noms.
  3. Sauvegarder le fichier
  4. Ouvrez une invite de commande et assurez-la dans votre projet de test
  5. Tapez cover pour que vos tests unitaires soient exécutés et que les résultats de votre couverture soient au format HTML, ou quel que soit le nom que vous avez donné à votre fichier bat à l'étape 11.
5
Wayne

Le codecoverage fonctionne pour moi, pour .Net Core en utilisant Microsoft.CodeCoverage comme mentionné ci-dessus.

Vérifiez que vous avez ajouté le nuget Microsoft.CodeCoverage à votre projet test

Vérifiez également le fichier project.json sur votre projet principal, l'attribut debugType doit être "complet" au lieu de "portable"

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "debugType": "full"
  },

Ce fixé pour moi

5
Carlos Soria

Coverlet ( https://github.com/tonerdo/coverlet ) est un nouveau projet récemment apparu. Cela fonctionne aux côtés de msbuild et donne une solution simple pour la couverture

OpenCover + ReportGenerator. Installez-les en tant que packages NUGET dans l'un de vos projets de test (une fois, car ils doivent simplement figurer dans le dossier du package).

Vous pouvez ensuite placer ce fichier powershel https://github.com/rpokrovskij/opencover4vs.ps1 dans votre dossier de solution et le configurer avec vos projets test à l'aide de path globing, par exemple.

$ TestProjectsGlobbing = @ (, '*. Test.csproj')

Ensuite, vous pouvez l'exécuter en tant que script Powershel standard. Le résultat devrait apparaître dans le dossier de solution dans\TestsResults\report\index.html

0
Roman Pokrovskij