Visual Studio are acoperire de cod pentru testele unitare? (Programare, Testare Unitară, Visual Studio 2015)

Álvaro García a intrebat.

Folosesc Visual Studio 2015 Community edition și știu că are opțiunea de a crea teste unitare pentru a testa codul, dar nu văd opțiunea de a testa acoperirea codului, așa că aș dori să știu dacă Visual Studio are această opțiune sau dacă trebuie să folosesc un plugin terță parte.

Dacă trebuie să folosesc o soluție terță parte, ar fi aceasta o opțiune bună?

5 răspunsuri
Toni Wenzel

Doar Visual Studio 2015 Enterprise are încorporată acoperirea codului. Consultați matricea caracteristicilor pentru detalii.

Puteți utiliza funcția extensia OpenCover.UI pentru verificarea acoperirii codului în cadrul Visual Studio. Aceasta acceptă MSTest, nUnit și xUnit.

Noua versiune poate fi descărcată de la aici (note de lansare).

Comentarii

  • Noua versiune a extensiei este acum disponibilă în Galeria VS visualstudiogallery.msdn.microsoft.com/… –  > Por Toni Wenzel.
  • Se pare că OpenCover UI nu acceptă NUnit 3 –  > Por Lennart.
  • opencover.UI (care este integrat cu VS) are un raport foarte dezordonat (fereastra de rezultate) care este pur și simplu imposibil de utilizat. mergeți direct la opencover: allenconway.net/2015/06/06/… –  > Por Roman Pokrovskij.
  • „Cea mai recentă versiune – 2016”. Nu funcționează cu Visual Studio modern -.  > Por Alex de la Jitbit.
Gordon Bean

Dacă utilizați Visual Studio 2017 și vă confruntați cu această întrebare, ați putea lua în considerare AxoCover. Este o extensie VS gratuită care integrează OpenCover, dar care acceptă VS2017 (se pare că este, de asemenea, în curs de dezvoltare activă. +1).

Pagina extensiei VS

https://github.com/axodox/AxoTools

Comentarii

  • Este demn de remarcat faptul că aceasta (în prezent) acceptă doar versiunile desktop ale .NET – adică .NET Core nu pare să fie acceptat la momentul redactării acestui articol. –  > Por Jay.
  • 12 dec. 2017, încă nu suportă .NET Core / Xamarin -.  > Por Tuan Tran.
  • yup. nu există .net core. tocmai mi-am dat seama după ce am instalat. 🙁 august 2018 –  > Por default_noob_network.
  • Începând cu martie 2019, AxoCover suportă, de asemenea, doar până la xUnit 2.2 (care este deja mai vechi de doi ani), fără planuri în prezent de a suporta xUnit 2.3 sau 2.4. Dacă sperați să executați teste xUnit, nu vă deranjați. –  > Por Sean Werkema.
  • Suntem în 2020 iunie și comentariile de mai sus sunt încă valabile, din păcate. –  > Por Ε Г И І И И О.
Alexei – verificați Codidact

Toni‘s answer este foarte util, dar m-am gândit la un început rapid pentru începătorii totali la evaluarea acoperirii testelor (cum sunt eu).

După cum s-a menționat deja, Visual Studio Professional și Community Editions nu au suport integrat pentru acoperirea testelor. Cu toate acestea, acesta poate fi obținut destul de ușor. Voi scrie pas cu pas configurația pentru utilizarea cu teste NUnit în cadrul Visual Studion 2015 Professional.

  1. Instalați Componenta OpenCover NUGet utilizând interfața NuGet

  2. Obțineți Extensia OpenCoverUI. Aceasta poate fi instalată direct din Visual Studio folosind Tools -> Extensions and Updates

  3. Configurați OpenCoverUI pentru a utiliza executabilele corespunzătoare, accesând Tools -> Options -> OpenCover.UI Options -> General

Calea NUnit: trebuie să indice către fișierul `nunit-console.exe. Acesta se găsește doar în cadrul versiunii NUnit 2.xx, care poate fi descărcată de la adresa aici.

Calea OpenCover: aceasta trebuie să indice către pachetul instalat, de obicei <solution path>packagesOpenCover.4.6.519toolsOpenCover.Console.exe

  1. Instalați pachetul ReportGenerator NUGet

  2. Accesați OpenCover Test Explorer din meniul OpenCover. Încercați să descoperiți testele de acolo. Dacă nu reușește, verificați ferestrele de ieșire pentru mai multe detalii.

  3. Verificați OpenCover Results (din meniul OpenCover) pentru mai multe detalii. Acesta va afișa detalii, cum ar fi Code Coverage (Acoperirea codului) într-o vizualizare bazată pe un arbore. De asemenea, puteți evidenția codul care este sau nu este acoperit (pictograma mică din stânga sus).

NOTĂ: așa cum s-a menționat, OpenCoverUI nu acceptă ultima versiune majoră a NUnit (3.xx). Cu toate acestea, dacă în cadrul testelor nu se folosește nimic specific acestei versiuni, va funcționa fără probleme, indiferent dacă aveți instalată versiunea NUnit 3.xx.

Aceasta acoperă pornirea rapidă. După cum s-a menționat deja în comentarii, pentru o configurare și automatizare mai avansată, verificați acest articol.

Comentarii

  • Extensia nu funcționează pe comunitatea VS 2019. Ce păcat –  > Por nicolascolman.
  • @nicolascolman Da, dar Fine Code Coverage pare să funcționeze. –  > Por Alexei – verificați Codidact.
Bas

Pentru oricine care caută o soluție ușoară în Visual Studio Community 2019, Fine Code Coverage este simplă, dar funcționează bine.

Nu poate oferi cifre exacte cu privire la acoperirea exactă, dar va spune ce linii sunt acoperite cu jgheaburi verzi/roșii.

Comentarii

  • Acesta este un indiciu bun. Cu toate acestea, funcționează numai cu .NET Core. –  > Por Alexei – verificați Codidact.
  • Comentariul de mai sus susține că funcționează doar cu .NET Core, dar eu îl folosesc cu un proiect .NET Framework Winforms fără probleme. Nu sunt sigur dacă a fost actualizat de când a fost scris acel comentariu, dar pentru oricine citește acum pare să funcționeze bine. –  > Por Jberg.
Ogglas

După cum s-a menționat deja, puteți utiliza Fine Code Coverage care vizualizează ieșirea coverlet. Dacă creați un xunit test project (dotnet new xunit), veți găsi referința la coverlet deja prezentă în csproj deoarece Coverlet este instrumentul de acoperire implicit pentru toate aplicațiile .NET Core și >= .NET 5.

Microsoft are un exemplu care utilizează ReportGenerator care convertește rapoartele de acoperire generate de coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov sau lcov în rapoarte lizibile de către om în diverse formate.

Exemplu de raport:

Deși articolul se concentrează pe C# și xUnit ca și cadru de testare, ar funcționa atât MSTest, cât și NUnit.

Ghid:

https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-code-coverage?tabs=windows#generate-reports

Dacă doriți o acoperire a codului în fișiere .xml, puteți rula oricare dintre aceste comenzi:

dotnet test --collect:"XPlat Code Coverage"

dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura