Wyświetl raport pokrycia kodu w portalu Azure devops

Uruchamiam testy NUnit (projekt w. Net Framework 4.5), jako część Azure devops build pipeline.

- task: VSTest@2
  inputs:
    testAssemblyVer2: 'tests/**/*.Tests.dll'
    pathtoCustomTestAdapters: '$(Build.SourcesDirectory)/packages'
    codeCoverageEnabled: true
  displayName: 'NUnit Testing'

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: JaCoCo
    summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.xml'
  displayName: 'Publish Code Coverage'
  //        summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.coverage'

Ale nie jestem w stanie zobaczyć raport pokrycia, wszystko widzę link do pobrania dla wyników pokrycia...

link do pobrania kodu

Jak mogę przekonwertować .raport do JaCoCo format? Lub wygenerować raport bezpośrednio w formacie JaCoCo?

Widziałem jakieś rozwiązanie dla. Net core (link), ale żadnego dla. Net framework

Author: harishr, 2019-02-11

2 answers

Aktualizacja:

W tym celu należy skontaktować się z Działem Obsługi Klienta.]}

Publikując raporty dotyczące kodu, nie musisz już określać plików HTML.

Dlatego skrypt na mojej ilustracji nie musi już używać narzędzia generatora raportów bezpośrednio do tworzenia raportu html, a podczas publikowania wyników pokrycia nie trzeba podawać katalogu zawierającego te raporty html.

Edit:


Sztuczka Znalazłem, aby uzyskać wyniki pokrycia z projektu. Net Framework, aby pokazać się na karcie pokrycie kodu jest w tej samej linii myślenia do twojego połączonego artykułu .

    Nie uruchamiaj zadań testowych w usłudze Azure]}
  1. zainstaluj Generator raportów oraz Coverlet narzędzia bezpośrednio
  2. użycie dotnet-vstest polecenie do przeprowadzania testów przez Coverlet
  3. Publikuj raporty wygenerowane za pomocą generatora raportów i Cobertura format coverage results


Nie używaj zadania VS Test

Uruchomienie tego zadania pozwoli Ci zebrać pokrycie za pomocą prostego pola wyboru, ale następnie zrezygnujesz z możliwości dostarczenia treści dla zakładki pokrycie kodu

no vstest task



Instaluj narzędzia bezpośrednio

Użyj Zadanie Powershell (lub podobne) do bezpośredniego zainstalowania narzędzi Coverlet i Report Generator. Pozwala to na użycie ich w projektach, które nie są . Net Core.

"install tools:"
&dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
&dotnet tool install coverlet.console --tool-path . --version 1.4.1



Użyj dotnet vstest przez coverlet

Rozumiem, że dotnet test nie gra dobrze w . Net Framework projekty/zespoły. Jednak nadal możemy użyć polecenia dotnet, które wiemy, że będzie na maszynie agenta, ale musimy użyć go jako mechanizmu aby dostać się do vstest.konsola.exe .

Narzędzie Coverlet , Jak wspomniano w linkowanym artykule, wyświetli wyniki pokrycia w formacie Cobertura , jeśli każesz mu to zrobić.

&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"


Opublikuj wyniki

użyj zadania publish code coverage



Complete script sample

uwaga: ten skrypt jest dość szorstki, więc użyj go jako ćwiczenia myślowe dla Twojej osoby sytuacja.

"install tools:"
&dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
&dotnet tool install coverlet.console --tool-path . --version 1.4.1

"`nmake reports dir:"
mkdir .\reports

"`nrun tests:"
$unitTestFile = gci -Recurse | ?{ $_.FullName -like "*bin\*UnitTestProject2.dll" }
Write-Host "`$unitTestFile value: $unitTestFile"

$coverlet = "$pwd\coverlet.exe"

"calling $coverlet for $($unitTestFile.FullName)"
&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"

"`ngenerate report(s)"
gci -Recurse | 
    ?{ $_.Name -eq "coverage.cobertura.xml" } | 
    %{ &"$pwd\reportgenerator.exe" "-reports:$($_.FullName)" "-targetdir:reports" "-reporttypes:HTMLInline;HTMLChart" }

Jeśli masz problemy z wymyśleniem ucieczki cudzysłowów i tym podobnych za pomocą polecenia Coverlet , nie jesteś sam. Używałem komendy echoargs z PSCX więcej razy, niż chciałem przyznać, więc mogłem zobaczyć, co tak naprawdę dostało się do .exe połączeń, które wykonywałem.



Wyniki!!

...bo tak naprawdę sprawy

Tutaj wpisz opis obrazka



Tutaj wpisz opis obrazka




Oryginalna Odpowiedź:


Ze względu na sposób, w jaki powiązany artykuł, o którym wspomniałeś, instaluje i używa globalnego narzędzia generatora raportów, myślę, że nadal możesz postępować zgodnie z tymi wytycznymi dotyczącymi tworzenia raportów HTML inline i wykresów.

Nie jestem pewien, co to znaczy i jak to działa, gdy artykuł mówi,

Chodzi o to, że typy raportów: użyj HTMLInLine, aby włączyć wyjście na stronie Azure DevOps. W tym celu należy użyć narzędzia Azure DevOps Coverage page.html W Sieci.

Rozumiem, że możesz użyć narzędzia do tworzenia raportu HTML z .xml coverage results, a następnie opublikuj wyniki coverage results i raportuj wraz z zadaniem Publish Code Coverage.

Więc wydaje się, że wszystko, czego potrzebujesz, to mieć .XML format .coverage narzędzie.

I nie udało się go uruchomić w prostym powershell, ale możesz postępować zgodnie z instrukcjami z Report Generator documentation, aby napisać narzędzie C#, aby uzyskać dostęp do biblioteki Coverage.Analysis.

 32
Author: Josh Gust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Możesz użyć zadania Publish Code Coverage Results w usłudze Azure devops pipeline, aby wyświetlić wynik pokrycia kodu w formacie Jacoco.

Aby uzyskać więcej informacji na temat konfiguracji i konfiguracji , sprawdź blog w MSDN

Https://docs.microsoft.com/hi-in/azure/devops/pipelines/tasks/test/publish-code-coverage-results?view=tfs-2015#q--a

Mam nadzieję, że to pomoże.

 0
Author: Mohit Verma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-21 06:57:20