GitHub Actions 및 Coverlet을 통해 Codecov에서 .NET 5 XUnit 코드 커버리지 보고
5817 단어 codecovcoverletnet5githubactions
시간이 흐르고 .NET 5가 도래했으며 모범 사례가 변경되었으므로 2021년에 .NET 프로젝트에 대한 코드 커버리지를 수집하는 방법을 살펴보겠습니다.
스택
얼마 동안 저는 새로운 XUnit
coverlet.collector
에서 찾을 수 있는 .csproj
에 흥미를 느꼈습니다. 이게 뭐야? 어떻게 사용할 수 있습니까? OpenCover를 그것으로 대체할 수 있습니까?또한 사람들이 GitHub Actions로 마이그레이션하는 것을 알아차리기 시작했는데 경험이 없었고 기차를 놓치고 있다는 느낌이 들었습니다. 이 관찰은 최근 GitHub Actions가 Codecov와 함께 사용되는 가장 빠르게 성장하는 CI 1위(절대 수치에서도 1위)를 기록한 2020 State of Open Source Code Coverage 보고서에서 확인되었습니다.
직장과 개인 프로젝트 모두에서 .NET 프로젝트에 사용하는 스택을 현대화할 수 있다고 생각했습니다. 이전에 사용했던 세 가지 도구 중 Codecov만 유지하겠습니다(굉장하니까요❤). 시작합시다.
적용 범위 생성
가능한 한 많은 작업에
dotnet
CLI를 사용하고 싶습니다. 좋은 소식은 coverlet
가 msbuild
와 긴밀한 통합을 제공한다는 것입니다.다음은 전체 솔루션에 대한 코드 적용 범위를 생성하는 방법입니다.
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
이 명령은 모든 테스트 프로젝트에서
coverage.opencover.xml
파일을 생성합니다(솔루션 수준에서 dotnet test
를 실행하는 경우).코드 검사 관련
/p:
스위치가 작동하도록 하려면 coverlet.msbuild
NuGet 패키지도 설치하기만 하면 됩니다. 따라서 .csproj
는 다음과 같이 표시됩니다.<PackageReference Include="coverlet.collector" Version="3.0.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.msbuild" Version="3.0.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Codecov에서 허용하는 형식이므로
/p:CoverletOutputFormat=opencover
스위치를 그대로 두어야 합니다.고급 구성에 대해서는 Coverlet's integration with MSBuild에 대한 설명서를 읽는 것이 좋습니다. 이는 솔루션이나 프로젝트가 명명 규칙을 따르지 않고 일부 추가 필터링 등을 수행해야 하는 경우에 특히 유용합니다.
GitHub Actions에 통합
dotnet test
를 CI 파이프라인에 연결하는 것은 새 워크플로 단계를 만드는 문제입니다. ubuntu-latest
또는 windows-latest
러너를 사용하더라도 완벽하게 작동합니다.- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore /p:ContinuousIntegrationBuild=true
- name: Test
run: dotnet test --no-build --verbosity normal /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
Codecov에 의한 커버리지 수집
마지막 단계는 테스트 커버리지를 Codecov에 업로드하는 것입니다. Codecov CLI 등을 설치할 필요 없이 프로세스를 매우 쉽게 만드는 공식Codecov GitHub Action을 시장에서 찾을 수 있습니다.
워크플로에 다음 줄을 추가하기만 하면 됩니다.
- name: Codecov
uses: codecov/codecov-action@v1
Codecov는 프로젝트의 폴더 구조를 검색하고 규칙에 따라 커버리지 보고서를 찾습니다. 공개 리포지토리의 경우
CODECOV_TOKEN
를 포함할 필요조차 없습니다.요약
보시다시피 이 접근 방식은 도구 다운로드 및 설치, PowerShell 스크립트 실행 등보다 훨씬 편리합니다.
표준 .NET 명명 및 폴더 구조 규칙을 고수한다면 요즘에는 코드 적용 범위를 설정하는 것이 실제로 매우 쉽습니다.
작동 중인 전체 워크플로우를 보려면 일부SDK repos로 이동하십시오. GitHub Actions를 사용하여 릴리스를 수행하는 방법을 탐색할 수도 있습니다. 모든 코드는
workflows folder
에 있습니다.다음 기사에서는 .
Reference
이 문제에 관하여(GitHub Actions 및 Coverlet을 통해 Codecov에서 .NET 5 XUnit 코드 커버리지 보고), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kontent_ai/reporting-net-5-xunit-code-coverage-in-codecov-via-github-actions-and-coverlet-4h5i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)