如何使用工件进行 dotnet 测试

问题描述 投票:0回答:2

我想将构建阶段的工件用于测试阶段。但不知何故,

dotnet test
命令找不到任何测试并立即退出。

dotnet restore
dotnet build
命令的工作方式似乎有所不同,具体取决于是在本地执行还是在 CI 中执行。

我的

.gitlab-ci

image: mcr.microsoft.com/dotnet/sdk:7.0

variables:
  CONFIGURATION: 'Release'
  MSBUILDDISABLENODEREUSE: "1"
  TEST_RESULT_DIRECTORY: '.test-results'

default:
  tags:
    - .NET 6.0
    - WPF

stages:
  - Build
  - Test

Build:
  stage: Build
  script:
    - dotnet restore --no-cache
    - dotnet build --no-restore --configuration $CONFIGURATION
  artifacts:
    paths:
      - ./**/bin/Release
      - ./**/obj/Release
    expire_in: 1 day

Test:
  stage: Test
  needs:
    - job: Build
      artifacts: true
  script:
    - dotnet test --no-build --nologo --configuration $CONFIGURATION --test-adapter-path:. --logger:"junit;LogFilePath=../$TEST_RESULT_DIRECTORY/{assembly}.xml;MethodFormat=Class;FailureBodyFormat=Verbose"
  artifacts:
    when: always
    reports:
      junit: 
        - ./$TEST_RESULT_DIRECTORY/*.xml

也许我只是在工件中丢失了一个关键文件,但通过比较本地和 CI 生成的文件,我注意到本地生成上的其他 NuGet 相关文件存在差异。

.net continuous-integration gitlab-ci artifact dotnet-build
2个回答
1
投票

经过一番挖掘,我发现并非所有

dotnet test
所需的文件都放在
obj/Release
文件夹中。其中一些比上面一级。

解决方案是包含完整的

obj
目录。

  artifacts:
    paths:
      - ./**/bin/Release
      - ./**/obj

0
投票

对我来说,在构建工作中我正在做

dotnet restore --no-cache --force --packages ".nuget"

我必须将

.nuget
文件夹添加到工件中

  artifacts:
    paths:
      # Save the build outputs as artifacts
      - ./**/bin
      - ./**/obj
      - ./.nuget
    expire_in: 1 day

否则我会遇到诸如

之类的问题
Data collection : Unable to find a datacollector with friendly name 'XPlat Code Coverage'.
Data collection : Could not find data collector 'XPlat Code Coverage'
© www.soinside.com 2019 - 2024. All rights reserved.