【问题标题】:'dotnet test' is not finding nunit tests in gitlab-runner pipeline'dotnet test' 未在 gitlab-runner 管道中找到 nunit 测试
【发布时间】:2019-11-22 11:11:52
【问题描述】:

我有一个带有 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.Gui\Foo.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:TESTPROJECT\Testresults\testreport.trx 
    artifacts:
        reports:
            junit: src\$env:TESTPROJECT\Testresults\testreport.xml

有人提示可能出了什么问题? Testproject (Foo.Test.dll) 可用并存在于构建工件中。

【问题讨论】:

  • NUnit3 适配器是否存在于输出目录中?
  • 是的。其实我想我找到了答案。在测试之前,我必须在构建管道上添加一个额外的dotnet restore 命令,以恢复project.assets.json。然后一切都按预期工作????

标签: .net unit-testing nunit gitlab-ci-runner dotnet-test


【解决方案1】:

我必须在测试之前在构建管道上添加一个额外的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:TESTPROJECT\Testresults\testreport.trx 
    artifacts:
        reports:
            junit: src\$env:TESTPROJECT\Testresults\testreport.xml

【讨论】:

  • 知道为什么吗?我觉得这是 dotnet 测试的错误。我让 GitLab 将我的项目和测试项目的 bin 和 obj 文件夹(因此它包括两者的 project.assets.json)添加到工件中,并且 still 必须在测试之前进行 dotnet restore可以被发现。
  • 老实说,我没有进一步调查这个问题。现在这个简单的解决方案总是有效的,我的问题就解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多