GitHub Actions 및 Coverlet을 통해 Codecov에서 .NET 5 XUnit 코드 커버리지 보고

AppVeyor + OpenCover + Codecov를 사용하여 .NET Core 3에 대한 코드 범위 보고를 설정하는 방법을 설명했던 것을 기억하실 것입니다.

시간이 흐르고 .NET 5가 도래했으며 모범 사례가 변경되었으므로 2021년에 .NET 프로젝트에 대한 코드 커버리지를 수집하는 방법을 살펴보겠습니다.

스택



얼마 동안 저는 새로운 XUnitcoverlet.collector에서 찾을 수 있는 .csproj에 흥미를 느꼈습니다. 이게 뭐야? 어떻게 사용할 수 있습니까? OpenCover를 그것으로 대체할 수 있습니까?

또한 사람들이 GitHub Actions로 마이그레이션하는 것을 알아차리기 시작했는데 경험이 없었고 기차를 놓치고 있다는 느낌이 들었습니다. 이 관찰은 최근 GitHub Actions가 Codecov와 함께 사용되는 가장 빠르게 성장하는 CI 1위(절대 수치에서도 1위)를 기록한 2020 State of Open Source Code Coverage 보고서에서 확인되었습니다.



직장과 개인 프로젝트 모두에서 .NET 프로젝트에 사용하는 스택을 현대화할 수 있다고 생각했습니다. 이전에 사용했던 세 가지 도구 중 Codecov만 유지하겠습니다(굉장하니까요❤). 시작합시다.

적용 범위 생성



가능한 한 많은 작업에 dotnet CLI를 사용하고 싶습니다. 좋은 소식은 coverletmsbuild와 긴밀한 통합을 제공한다는 것입니다.
다음은 전체 솔루션에 대한 코드 적용 범위를 생성하는 방법입니다.

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 에 있습니다.

다음 기사에서는 .

좋은 웹페이지 즐겨찾기