Azure DevOps 파이프라인에 코드 적용 범위를 포함하는 방법은 무엇입니까?
이 소리는
TL;DR
Untested code is a broken code.
Definitely a strong statement but true in a way, we don't always manage to get enough coverage.
Often this happens because we don't have time, other times because despite having written tests we are not able to read the metrics.
그렇다면 어떻게 코드 커버리지 메트릭을 "인간화"할 수 있을까요? 어떻게 생성할 수 있습니까?
이러한 질문에 답하기 위해 저는 보통 두 개의 라이브러리를 사용합니다.
이불 커버리지 / 침대보
.NET용 크로스 플랫폼 코드 커버리지
메트릭을 수집하고
다니엘 팔메 / 보고서 생성기
ReportGenerator는 coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov 또는 lcov에서 생성된 커버리지 보고서를 다양한 형식의 사람이 읽을 수 있는 보고서로 변환합니다.
사람이 읽을 수 있는 보고서를 생성합니다.
Coverlet은 어떻게 설정할 수 있습니까?
나는 보통 coverlet.msbuild 을 MSBuild .targets Files - Visual Studio | Microsoft Docs 으로 포함합니다.
테스트 프로젝트에 coverlet을 포함하는 다른 방법은 coverlet-coverage/coverlet: Cross platform code coverage for .NET (github.com)도 참조하십시오.
ReportGenerator는 어떻게 설정할 수 있습니까?
위와 일치하여 ReportGenerator을 MSBuild .targets Files - Visual Studio | Microsoft Docs으로 포함합니다.
<script id="gist-ltag"src="https://gist.github.com/binick/71ec60d143ee51523e2c7ac23b9ae543.js?file=ReportGenerator.targets"/>
또한 이 도구는 다양한 사용 방법을 제공하며 공식 문서 ReportGenerator - converts coverage reports generated by coverlet에서 모든 방법을 찾을 수 있습니다.
그 모든 것을 연결하는 방법?
모든 것이 작동하려면 다른 MSBuild 파일을 추가해야 합니다.
<script id="gist-ltag"src="https://gist.github.com/binick/71ec60d143ee51523e2c7ac23b9ae543.js?file=Test.targets"/>
이것을 테스트 프로젝트에 포함하세요.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<Import Project="Tests.targets" />
</Project>
이제 dotnet test
을 실행할 수 있는 모든 것을 다음과 같이 검사하고 분석할 수 있습니다
어떤 코드가 적용되고 어떤 코드가 적용되지 않는지 한 눈에 파악할 수 있는 놀라운 도구라고 생각합니다.
이제 어떻게 Azure DevOps 파이프라인에 넣을 수 있습니까?
이 보고서가 빌드 파이프라인 보고서에 게시되면 좋지 않을까요? 이를 위한 분기 정책을 포함할 수도 있습니다.
다음과 같이 Publish Code Coverage Results task을 사용하면 가능합니다.
- task: PublishCodeCoverageResults@1
displayName: Publish Code Coverage Results
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)/Reports/Summary/Cobertura.xml'
continueOnError: true
condition: always()
summaryFileLocation
인수를 확인했습니다. 이는 하나의 파일만 Azure DevOps에 푸시한다는 의미입니다. 이유는 무엇인가요?
코드 적용 범위 결과 게시 또는 제한 사항에 대한 작성하지 않은 메모 중 하나는 더 많은 보고서를 게시할 때 적용 라인의 합계가 첫 번째 파일 에서 가져온다는 것입니다.
이로 인해 신뢰할 수 없는 결과가 발생합니다.
이 문제를 해결하기 위해 여러 보고서를 요약 보고서로 병합하여 하나만 게시할 수 있습니다. 그것을 만드는 한 가지 방법은 다음과 같습니다
<script id="gist-ltag"src="https://gist.github.com/binick/71ec60d143ee51523e2c7ac23b9ae543.js?file=SummaryReportGenerator.proj"/>
를 사용하여 MSBuild 프로젝트를 파이프라인으로 실행
- script: dotnet msbuild SummaryReportGenerator.proj /p:Configuration=$(Configuration)
name: GenerateCodeCoverageSummary
displayName: Generate code coverage summary
이 작업을 완료하면 빌드 파이프라인의 적용 라인 합계가 true가 됩니다.
Reference
이 문제에 관하여(Azure DevOps 파이프라인에 코드 적용 범위를 포함하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/binick/how-to-include-code-coverage-in-azure-devops-pipeline-1994텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)