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...
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
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]}
- zainstaluj Generator raportów oraz Coverlet narzędzia bezpośrednio
- użycie dotnet-vstest polecenie do przeprowadzania testów przez Coverlet
- 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
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
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
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
.
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
Mam nadzieję, że to pomoże.
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