我有一个使用 xUnit 的单元测试,并且使用的是 net 472。单元测试正在测试我们使用 IEnumerable 制作的函数。我有一个像这样的断言
adt.PatientVisitInformation.First().AssignedPatientLocation.Facility.Value.ShouldBe("Arundel");
单元测试在 Visual Studio 中运行时工作正常,但通过管道运行时会返回此错误
Error Message:
System.InvalidOperationException : Sequence contains no elements
Stack Trace:
at System.Linq.Enumerable.First[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x00010] in <69ada62907b24213a012734531df1db1>:0
at My.Products.HL7.Parser.UnitTests.Definitions.Messages.ADT_ATests.Decode_ADTAMessage (System.String ADT) [0x00321] in <36abcadd6a6a4eadb1f459337a2a48d7>:0
at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in <d636f104d58046fd9b195699bcb1a744>:0
Failed My.Products.HL7.Parser.UnitTests.Definitions.Messages.ADT_ATests.Decode_ADTAMessage(ADT: "ADT^A01") [7 ms]
我的管道中的 IEnumerable 就像这样返回
System.Linq.Enumerable+<OfTypeIterator>d__32`1[My.Products.HL7.Parser.Definitions.Segments.PV1]
这是我在管道中使用的命令
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '8.x' # Specify the .NET SDK version
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '6.0.x' # Optional: If you need a .NET 6 SDK for any reason
installationPath: $(Agent.ToolsDirectory)/dotnet
- script: dotnet nuget locals all --clear
displayName: 'Clear NuGet caches'
- task: DotNetCoreCLI@2
displayName: 'Restore NuGet Packages'
inputs:
command: 'restore'
projects: '**Integrations/**/*.csproj'
- task: DotNetCoreCLI@2
displayName: 'Build Function - Custom Function'
inputs:
command: 'build'
projects: '**Integrations/**/*.csproj'
arguments: '/p:LogicAppFolder=Test-Interface-LogicApp\LogicApp-${{parameters.testInterface}}'
- task: DotNetCoreCLI@2
displayName: 'Test Custom Functions'
inputs:
command: test
projects: |
**Integrations/**/*.UnitTests.csproj
arguments: '--logger "console;verbosity=detailed"'
publishTestResults: true
我使用的 vmImage 是 ubuntu-latest
在管道运行器上,git 替换了 windows 行仅以
\n
结尾,解析器对此很敏感。它认为该消息是一长行,因此没有按预期找到 PV1 段。
我只是安装 dos2unix 并转换包含 HL7 消息的文件。这是管道脚本。
# install dos2unix for converting unix to dos
任务:CmdLine@2 displayName: '安装 dos2unix' 输入: 脚本: | echo 安装 dos2unix sudo apt-get 更新 sudo apt-get install -y dos2unix
任务:CmdLine@2 displayName: '将文件从 Unix 格式转换为 DOS 格式' 输入: 脚本: | echo 将文件从 Unix 格式转换为 DOS 格式 找到 Integrations//HL7.Parser.UnitTests -name '.cs' -type f -exec unix2dos {} ;