Azure devops 将任务拆分为单独的作业后未找到测试

Azure devops 将任务拆分为单独的作业后未找到测试,azure-devops,azure-pipelines,azure-pipelines-yaml,azure-devops-pipelines,azure-pipelines-tasks,Azure Devops,Azure Pipelines,Azure Pipelines Yaml,Azure Devops Pipelines,Azure Pipelines Tasks,我试图通过将一些任务拆分为单独的作业来重构构建管道,以实现可扩展性 下面的工作非常完美,测试可以顺利找到并运行 stages: - stage: build_test_publish displayName: Build pool: vmImage: "windows-latest" variables: solution: "**/SolutionName.sln" buildPlatfor

我试图通过将一些任务拆分为单独的作业来重构构建管道,以实现可扩展性

下面的工作非常完美,测试可以顺利找到并运行

stages:
  - stage: build_test_publish
    displayName: Build
    pool:
      vmImage: "windows-latest"
    variables:
      solution: "**/SolutionName.sln"
      buildPlatform: "Any CPU"
      buildConfiguration: "Release"
    jobs:
      - job: build_publish_artifacts
        displayName: "Build, test and publish artifacts"
        steps:
          - task: NuGetToolInstaller@1
          - task: NuGetCommand@2
            inputs:
              command: "restore"
              restoreSolution: "**/*.sln"
              feedsToUse: "select"
              vstsFeed: "xxx"

          - task: VSBuild@1
            inputs:
              solution: "$(solution)"
              msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
              platform: "$(buildPlatform)"
              configuration: "$(buildConfiguration)"

          - task: VSTest@2
            inputs:
              platform: '$(buildPlatform)'
              configuration: '$(buildConfiguration)'
              runInParallel: false
              codeCoverageEnabled: true
              testAssemblyVer2: |
                 **\*test*.dll
                 !**\ProjectName.IntegrationTests.dll
                 !**\*TestAdapter.dll
                 !**\obj\**
              searchFolder: '$(System.DefaultWorkingDirectory)'
然而,在像下面这样将其拆分之后,我得到了下面的输出,其中找不到任何测试

stages:
  - stage: build_test_publish
    displayName: Build, test and publish artifacts
    pool:
      vmImage: "windows-latest"
    variables:
      solution: "**/SolutionName.sln"
      buildPlatform: "Any CPU"
      buildConfiguration: "Release"
    jobs: 
      - job: build
        displayName: "Build"
        steps:
          - task: NuGetToolInstaller@1
          - task: NuGetCommand@2
            inputs:
              command: "restore"
              restoreSolution: "**/*.sln"
              feedsToUse: "select"
              vstsFeed: "xxx"
          - task: VSBuild@1
            inputs:
              solution: "$(solution)"
              msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
              platform: "$(buildPlatform)"
              configuration: "$(buildConfiguration)"
                

      - job: test
        displayName: Run unit tests
        dependsOn: build
        steps:
          - task: VSTest@2
            inputs:
              platform: '$(buildPlatform)'
              configuration: '$(buildConfiguration)'
              runInParallel: false
              codeCoverageEnabled: true
              testAssemblyVer2: |
                 **\*test*.dll
                 !**\ProjectName.IntegrationTests.dll
                 !**\*TestAdapter.dll
                 !**\obj\**
              searchFolder: '$(System.DefaultWorkingDirectory)'
为什么会发生这种情况?我应该改变或重新思考什么

**编辑 看起来可能是因为每个作业都使用自己的代理来运行其作业中的任务

我仍然想知道这样的事情是否可能,以便使用不同的环境变量启动测试运行

          - task: VSBuild@1
            inputs:
              solution: "$(solution)"
              msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
              platform: "$(buildPlatform)"
              configuration: "$(buildConfiguration)"
不在开箱即用的作业之间共享。在场景分割任务背后,您可以在不同的计算机上运行VSBuild和VSTask。这样做没有多大意义——我的意思是将这两项任务分开

但是,如果您仍然想这样做,您需要。

DLL由

          - task: VSBuild@1
            inputs:
              solution: "$(solution)"
              msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
              platform: "$(buildPlatform)"
              configuration: "$(buildConfiguration)"
不在开箱即用的作业之间共享。在场景分割任务背后,您可以在不同的计算机上运行VSBuild和VSTask。这样做没有多大意义——我的意思是将这两项任务分开

然而,如果你仍然想这样做,你需要这样做