IEnumerable 无法在 Azure DevOps 管道中工作

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

我有一个使用 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

.net azure ienumerable azure-pipelines-yaml xunit.net
1个回答
0
投票

在管道运行器上,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 {} ;

© www.soinside.com 2019 - 2024. All rights reserved.