我正在DevOps Server中建立一个构建,该构建仅运行docker构建,运行容器并从中收集测试结果。 Dockerfile使用mcr.microsoft.com/dotnet/core/sdk:2.2映像作为其基础,在此基础上我安装了powershell。
运行基本映像并执行dotnet --version
确认其上具有.NET Core 2.2.301。我的测试项目引用Coverlet.collector 1.0.1和Microsoft.NET.Test.Sdk 16.1.0。从我看到的Coverlet文档中,这足以生成测试覆盖率结果。
当我不使用Coverlet时,我的测试运行良好并生成了预期的trx文件。
这是我的dockerfile的简化版本:
FROM myrepo/coresdk22-powershell AS build
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
USER ContainerAdministrator
# Not shown: some configuration steps using powershell
WORKDIR /app
COPY webapiapp/*.csproj ./webapiapp/
WORKDIR /app/webapiapp
RUN dotnet restore --configfile ../nuget.config
WORKDIR /app/
COPY webapiapp/. ./webapiapp/
WORKDIR /app/webapiapp
RUN dotnet publish -c Release -o out
FROM build AS testrunner
WORKDIR /app/webapiapp.test
COPY webapiapp.test/. .
RUN dotnet build -c Release -o out
WORKDIR /app/webapiapp.test/out
ENV Coverage="XPlat Code Coverage"
ENTRYPOINT dotnet vstest webapiapp.test.dll --logger:trx --collect:$env:Coverage
这是运行命令:
docker run -v "c:\testresults:C:\app\webapiapp.test\out\TestResults" --rm myrepo/webapiapp:$(BUILD.BUILDID)-test
这是webapiapp.test.csproj:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="1.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
</ItemGroup>
</Project>
我得到的不是“ coverage文件”,而是“找不到数据收集器'XPlat Code Coverage'”。我想念什么?
答案 0 :(得分:0)
我遇到了同样的错误,对我来说,解决方法是在下面添加nuget参考。
<PackageReference Include="coverlet.collector" Version="1.0.1" />
我试图让代码覆盖率在我的azure devops管道中起作用,这对我来说是成功的秘诀。
我遵循以下教程,使用默认模板api(WeatehrForecast示例)
https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/dotnet-core?view=azure-devops