我最近开始使用,C#
并且正在研究我们拥有的一个遗留系统。我试图弄清楚这个遗留系统的代码覆盖率是多少。这是我的Sample.UnitTests.csproj
文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoFixture.AutoMoq" Version="4.2.1" />
<PackageReference Include="AutoFixture.NUnit3" Version="4.2.1" />
<PackageReference Include="coverlet.msbuild" Version="2.9.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Moq" Version="4.8.2" />
<PackageReference Include="nunit" Version="3.9.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.9.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
<PackageReference Include="WireMock.Net" Version="1.0.4.17" />
<PackageReference Include="Utf8Json" Version="1.3.7" />
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="System.Buffers" Version="4.5.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="../Sample/Sample.csproj" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="dotnet-reportgenerator-cli" Version="4.2.10" />
</ItemGroup>
</Project>
我做了一些研究,发现我们可以使用coverlet
哪个可以生成cobertura
样式报告。我完全按照这里提到的在我的 mac 盒子上进行操作,一切正常,我可以看到在我的控制台上正确生成了报告,它还生成index.html
了我们可以用来可视化的文件。
dotnet add package coverlet.msbuild
dotnet restore
dotnet build
dotnet test /p:CollectCoverage=true
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:Exclude="[xunit*]\*" /p:CoverletOutput="./TestResults/"
dotnet reportgenerator "-reports:TestResults/coverage.cobertura.xml" "-targetdir:TestResults/html" -reporttypes:HTML;
现在,因为我们gitlab ci/cd
为我们的项目使用管道 - 有什么方法可以让我的.gitlab-ci.yml
文件的这一部分,以便它可以在构建发生时自动为我生成报告,并且我团队中的每个人都可以成功地看到它。因为到目前为止它都是手动的,因为我需要在我的本地 mac 机器上运行上述命令,我只能通过单击index.html
文件从控制台中看到它。
这些是我的.gitlab-ci.yml
文件阶段,如下所示。如果需要,我也可以提供我的yml
文件,但是任何可以演示如何执行此操作的简单示例都会有很大帮助。我尝试了很多搜索,但根本找不到关于如何通过使用.net 应用程序coverlet
和cobertura
样式报告的 gitlab 管道来做到这一点。
stages:
- test
- publish
- increment
- deploy
- integrationTests
- release
如果需要,这也可以通过 webhook 完成吗?