簡體   English   中英

.Net/VS 測試運行器在 Azure DevOps 中運行時失敗

[英].Net/VS Test runner fails when running in Azure DevOps

我正在運行針對.Net Framework 4.6.2 的 C# 單元測試。

事情在本地運行良好,它也可以很好地構建和運行安裝在構建代理上的 VS2019 的所有測試。

但是,當使用托管或自托管代理在 Azure DevOps 中運行構建時,即使所有測試都成功,測試步驟也會失敗。

在構建代理上從命令行手動運行vstest.console.exe可以正常工作並成功。 我使用與 Azure DevOps 相同的參數運行此命令。

日志產生的錯誤(數百個):

##[error][xUnit.net 00:00:00.0457701] Microsoft.VisualStudio.QualityTools.UnitTestFramework:災難性失敗:System.TypeInitializationException:“Xunit.DiaSession”的類型初始化程序引發異常。 ---> System.IO.FileNotFoundException:無法加載文件或程序集“System.Reflection.TypeExtensions,版本=4.1.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”或其依賴項之一。 該系統找不到指定的文件。

##[error] 在 Xunit.DiaSession..cctor() ##[error] --- 內部異常堆棧跟蹤結束 --- ##[error] 在 Xunit.DiaSession..ctor(String assemblyFileName) ##[錯誤] 在 C:\projects\xunit\src\xunit.runner.utility\Utility\DiaSessionWrapper_DotNet.cs:line 16 中的 Xunit.DiaSessionWrapper..ctor(String assemblyFilename)

##[error] at Xunit.XunitFrontController..ctor(AppDomainSupport appDomainSupport, String assemblyFileName, String configFileName, Boolean shadowCopy, String shadowCopyFolder, ISourceInformationProvider sourceInformationProvider, IMessageSink diagnosticMessageSink) in C:\projects\xunit\src\xunit.runner.utility\框架\XunitFrontController.cs:第 64 行

##[錯誤] 在 C:\projects\xunit\s 中的 Xunit.Runner.VisualStudio.TestAdapter.VsTestRunner.RunTestsInAssembly(IRunContext runContext,IFrameworkHandle frameworkHandle,LoggerHelper 記錄器,TestPlatformContext testPlatformContext,IMessageSinkWithTypes reportMessageHandler,AssemblyRunInfo runInfo)視覺工作室\VsTestRunner.cs:第 458 行

構建摘要

總測試:3679 通過:3675 跳過:4 總時間:3.4993 分鍾 Vstest.console.exe 以代碼 1 退出。

在日志頂部,在測試步驟初始化期間:

找到相同擴展的多個版本。 選擇最高版本。 Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter:14.0.2505.1 xunit.runner.visualstudio.dotnetcore.testadapter:99.99.99.0 xunit.runner.visualstudio.testadapter:99.99.99.0

管道

pool:
  name: Dedicated VS2017
  demands:
  - msbuild
  - visualstudio
  - vstest

steps:
- task: gittools.gitversion.gitversion-task.GitVersion@3
  displayName: GitVersion
  inputs:
    updateAssemblyInfo: true

- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.3.0'

- task: NuGetCommand@2
  displayName: 'NuGet restore Shamrock.Web'
  inputs:
    restoreSolution: '$(Parameters.solution)'

- task: Npm@1
  displayName: 'npm install Documenta'
  inputs:
    workingDir: src/Documenta/Documenta.Web/ClientApp
    verbose: false
  enabled: false

- task: Npm@1
  displayName: 'npm build Documenta/ClientApp'
  inputs:
    command: custom
    workingDir: src/Documenta/Documenta.Web/ClientApp
    verbose: false
    customCommand: 'run build'
  enabled: false

- task: Npm@1
  displayName: 'npm install Shamrock.Web/Angular'
  inputs:
    workingDir: src/Shamrock.Web/Shamrock.Web/Angular
    verbose: false
  enabled: false

- task: Npm@1
  displayName: 'npm build Shamrock.Web/Angular'
  inputs:
    command: custom
    workingDir: src/Shamrock.Web/Shamrock.Web/Angular
    verbose: false
    customCommand: 'run build'
  enabled: false

- task: VSBuild@1
  displayName: 'Build solution'
  inputs:
    solution: src/Shamrock.Web/Shamrock.Web.sln
    msbuildArgs: '/p:SEPrecompilerIncludeRazor=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    clean: true
    maximumCpuCount: true

- task: VSBuild@1
  displayName: 'Build solution D365'
  inputs:
    solution: src/Shamrock.D365/Shamrock.D365.sln
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    maximumCpuCount: true
  enabled: false

- task: VSBuild@1
  displayName: 'Build solution Documenta'
  inputs:
    solution: src/Documenta/Documenta.sln
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    maximumCpuCount: true
  enabled: false

- task: VSTest@2
  displayName: 'Test Assemblies'
  inputs:
    testAssemblyVer2: |
     **\$(BuildConfiguration)\*tests.dll
     !**\obj\**
     !**\*testadapter.dll
    vsTestVersion: 16.0
    runInParallel: false
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    diagnosticsEnabled: True

- task: CopyFiles@2
  displayName: 'Copy DACPAC'
  inputs:
    Contents: '**\*.dacpac'
    TargetFolder: '$(build.artifactstagingdirectory)'

- task: CopyFiles@2
  displayName: 'Copy Database Publish Profile'
  inputs:
    Contents: '**\Shamrock.Database.publish.xml'
    TargetFolder: '$(build.artifactstagingdirectory)'

- task: PublishSymbols@1
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: '**\bin\**\*.pdb'
  enabled: false
  continueOnError: true

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
    ArtifactName: '$(Parameters.ArtifactName)'

僅當“在發生災難性故障時收集高級診斷”標志設置為true時,才會出現此問題。

確保它關閉,然后它工作正常。

在此處輸入圖像描述

已知問題現已修復: https://developercommunity.visualstudio.com/content/problem/763234/e0434352clr-issues.html


2020 年 1 月 7 日更新

這個問題再次出現,即使我們將上述標志設置為 false。

我們這次找到的解決方案是在管道中添加一個工具安裝程序步驟,並在測試步驟中使用它。

UI 中的工具安裝程序步驟

在此處輸入圖像描述

使用正確的測試平台版本在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM