C# .Net/VS测试运行程序在Azure DevOps中运行时失败
我正在运行针对.NETFramework4.6.2的C#单元测试 本地工作正常,而且它还可以很好地构建和运行构建代理上安装的VS2019的所有测试 但当使用托管或自托管代理在Azure DevOps中运行构建时,即使所有测试都成功,测试步骤也会失败 在构建代理上从命令行手动运行C# .Net/VS测试运行程序在Azure DevOps中运行时失败,c#,visual-studio,unit-testing,azure-devops,azure-pipelines,C#,Visual Studio,Unit Testing,Azure Devops,Azure Pipelines,我正在运行针对.NETFramework4.6.2的C#单元测试 本地工作正常,而且它还可以很好地构建和运行构建代理上安装的VS2019的所有测试 但当使用托管或自托管代理在Azure DevOps中运行构建时,即使所有测试都成功,测试步骤也会失败 在构建代理上从命令行手动运行vstest.console.exe,工作正常并成功。我使用与Azure DevOps相同的参数运行此命令 日志中产生的错误(数百个): ##[错误][xUnit.net 00:00:00.0457701]Microsof
vstest.console.exe
,工作正常并成功。我使用与Azure DevOps相同的参数运行此命令
日志中产生的错误(数百个):
##[错误][xUnit.net 00:00:00.0457701]Microsoft.VisualStudio.QualityTools.UnitTestFramework:灾难性故障:System.TypeInitializationException:“xUnit.DiaSession”的类型初始值设定项引发异常。-->System.IO.FileNotFoundException:无法加载文件或程序集'System.Reflection.TypeExtensions,Version=4.1.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件
##[错误]在Xunit.diseasion..cctor()处
##[错误]---内部异常堆栈跟踪结束---
##Xunit.DiaSession..ctor处的[错误](字符串assemblyFileName)
##[错误]位于C:\projects\Xunit\src\Xunit.runner.utility\utility\DiaSessionWrapper_DotNet.cs中的Xunit.DiaSessionWrapper..ctor(String assemblyFilename)处:第16行
##[错误]位于Xunit.XunitFrontController..ctor(AppDomainSupport AppDomainSupport、字符串汇编文件名、字符串配置文件名、布尔阴影复制、字符串阴影复制文件夹、ISourceInformation Provider SourceInformation Provider、IMessageSink diagnosticMessageSink)在C:\projects\xunit\src\xunit.runner.utility\Frameworks\XunitFrontController.cs中:第64行
##[错误]位于Xunit.Runner.VisualStudio.TestAdapter.VsTestRunner.RunTestsInAssembly(IRunContext runContext、IFramewHandle frameworkHandle、LoggerHelper logger、TestPlatformContext TestPlatformContext、IMessageSinkWithTypes reporterMessageHandler、AssemblyRunInfo runInfo)在C:\projects\xunit\src\xunit.runner.visualstudio\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
管道
只有当“在发生灾难性故障时收集高级诊断”标志设置为
true
时,才会出现问题
确保它已关闭,然后工作正常
已知问题现已修复:
更新日期:2020年1月7日 这个问题再次出现,尽管前面提到的标志设置为false 我们这次找到的解决方案是将工具安装程序步骤添加到管道中,并从测试步骤中使用该步骤 UI中的工具安装程序步骤 使用正确的测试平台版本
您是否正在恢复管道中的nuget软件包?是的,以及构建所有工作正常的项目。您是否可以发布管道.yml?发布到questionhuh,我有点希望您在不同的作业或阶段运行构建和测试,并且只对构建进行nuget恢复。很抱歉,我不能帮你解决这个问题,但我相信附近会有一位azure管道专家。非常感谢在这里分享这个解决方案。你可以接受这个答案,这样其他人就可以参考这个解决方案:-)@MerlinLiang MSFT刚刚添加了更多内容,我们又出现了这个问题。这一次是另一种解决方案。也许有更好的方法来解决它?请注意,对于那些使用.netcore3.1的人来说,这将不起作用,并且yaml与.netcore不兼容
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)'