DotNet测试未在GitLab-Runner管道中找到n个单元测试

人气:498 发布:2022-10-16 标签: .net unit-testing nunit gitlab-ci-runner dotnet-test

问题描述

我有一个NUnit测试项目(Foo.Test)的解决方案。

+-- src
|   +-- Foo.Gui
|   +-- Foo.Test
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="TestResults**" />
    <EmbeddedResource Remove="TestResults**" />
    <None Remove="TestResults**" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="GitVersionTask" Version="5.1.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="nunit" Version="3.12.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..Foo.GuiFoo.Gui.csproj" />
  </ItemGroup>

</Project>

以下调用用于测试:

dotnet test --no-build -c Release -v n src\%TESTPROJECT%\%TESTPROJECT%.csproj --logger "trx;LogFileName=testreport.trx"

如果我在本地运行,则一切正常:

生成服务器上的相同调用未找到任何测试:

gitLab-ci.yml

test:solution:
    stage: test
    script:
        - dotnet test --no-build -c Release -v n src$env:TESTPROJECT$env:TESTPROJECT.csproj --logger "trx;LogFileName=testreport.trx"
    after_script:
        - trx2junit src$env:TESTPROJECTTestresults	estreport.trx 
    artifacts:
        reports:
            junit: src$env:TESTPROJECTTestresults	estreport.xml

有人得到了一个提示,什么可能是错误的?测试项目(Foo.Test.dll)在构建构件中可用并存在。

推荐答案

在测试之前,我必须在构建管道上添加额外的dotnet restore命令,以恢复project.assets.json。现在一切正常,

test:solution:
    stage: test
    script:
        - dotnet restore src
        - dotnet test --no-build -c Release -v n src$env:TESTPROJECT$env:TESTPROJECT.csproj --logger "trx;LogFileName=testreport.trx"
    after_script:
        - trx2junit src$env:TESTPROJECTTestresults	estreport.trx 
    artifacts:
        reports:
            junit: src$env:TESTPROJECTTestresults	estreport.xml

250