微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将任务拆分为单独的作业后未发现测试

如何解决将任务拆分为单独的作业后未发现测试

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

以下工作完美,测试找到并运行没有问题。

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)'
Starting: VSTest
==============================================================================
Task         : Visual Studio Test
Description  : Run unit and functional tests (Selenium,Appium,Coded UI test,etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest,xUnit,NUnit,Chutzpah (for JavaScript tests using QUnit,Mocha and Jasmine),etc. can be run. Tests can be distributed on multiple agents using this task (version 2).
Version      : 2.170.1
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/test/vstest
==============================================================================
SystemVssConnection exists true
SystemVssConnection exists true
Running tests using vstest.console.exe runner.
======================================================
Test selector : Test assemblies
Test filter criteria : null
Search folder : D:\a\1\s
Action when minimum tests threshold not met : donothing
Minimum tests expected to be run: 0
VisualStudio version selected for test execution : latest
Attempting to find vstest.console from a visual studio installation with version [16.0,17.0).
Run in parallel : false
Run in isolation : false
Path to custom adapters : null
Other console options : null
Code coverage enabled : true
Diagnostics enabled : false
SystemVssConnection exists true
Run the tests locally using vstest.console.exe
========================================================
Source filter: **\*test*.dll,!**\ProjectName.IntegrationTests.dll,!**\*TestAdapter.dll,!**\obj\**
##[warning]No test sources found matching the given filter '**\*test*.dll,!**\obj\**'
Finishing: VSTest

为什么会发生这种情况,我应该改变或重新思考什么?

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

https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/key-pipelines-concepts?view=azure-devops

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

解决方法

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。这样做没有多大意义 - 我的意思是将这两个任务分开。

但是,如果您仍想这样做,则需要publish artifact and download it in next job

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。