我正在运行针对.Net Framework 4.6.2的C#单元测试。
事情在本地运行良好,它还可以正常构建并运行安装在构建代理上的VS2019中的所有测试。
但是,当使用托管代理或自托管代理在Azure DevOps中运行生成时,即使所有测试均成功,测试步骤也会失败。
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,版本= 4.1.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该系统找不到指定的文件。
## [error] at Xunit.DiaSession..cctor()## [error] ---内部异常堆栈跟踪的结尾--- ## [error] at Xunit.DiaSession..ctor(String assemblyFileName)## [错误]在C:\ projects \ xunit \ src \ xunit.runner.utility \ Utility \ DiaSessionWrapper_DotNet.cs:line 16中的Xunit.DiaSessionWrapper..ctor(String assemblyFilename)
Xunit.XunitFrontController..ctor(AppDomainSupport appDomainSupport,字符串assemblyFileName,字符串configFileName,布尔shadowCopy,字符串shadowCopyFolder,ISourceInformationProvider sourceInformationProvider,IMessageSink诊断消息Sink)上的## [错误]在C:\ projects \ xunit \ src \ xunit.runner.utility \ Frameworks \ XunitFrontController.cs:第64行
Xunit.Runner.VisualStudio.TestAdapter.VsTestRunner.RunTestsInAsssembly(IRunContext runContext,IFrameworkHandle frameworkHandle,LoggerHelper logger,TestPlatformContext testPlatformContext,IMessageSinkWithTypes reporterMessageHandler,AssemblyRunInfo runInfo)上的## [错误]。 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
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,该问题再次出现。
我们这次发现的解决方案是将Tools安装程序步骤添加到管道中,并在测试步骤中使用它。
UI中的工具安装程序步骤
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句