Azure devops VSTS错误:未找到与模式匹配的测试程序集
我计划一夜之间使用VST运行端到端测试。是否有任何指导性文件或样本计划来说明如何实施这一点 基本上,我们在VST中有API项目,在主解决方案中有端到端的测试项目。所以我们想在一夜之间进行这些测试。所有其他测试都作为构建的一部分运行,但不是E2E,因为它应该在部署后运行 这是build.yamlAzure devops VSTS错误:未找到与模式匹配的测试程序集,azure-devops,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines Release Pipeline,我计划一夜之间使用VST运行端到端测试。是否有任何指导性文件或样本计划来说明如何实施这一点 基本上,我们在VST中有API项目,在主解决方案中有端到端的测试项目。所以我们想在一夜之间进行这些测试。所有其他测试都作为构建的一部分运行,但不是E2E,因为它应该在部署后运行 这是build.yaml resources: - repo: self queue: name: Hosted VS2017 demands: - vstest - msbuild - visualstud
resources:
- repo: self
queue:
name: Hosted VS2017
demands:
- vstest
- msbuild
- visualstudio
variables:
BuildPlatform: 'any cpu'
BuildConfiguration: 'release'
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: NuGetCommand@2
displayName: 'NuGet restore'
- task: VSBuild@1
displayName: 'Build solution'
inputs:
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(Build.ArtifactStagingDirectory)\app.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
- task: powershell@2
inputs:
targetType: filePath
filePath: deploy/lib/GetSwaggerByExe.ps1
arguments: '-RootDirectory "src/SwaggerGenerator" -OutputFile "deploy/swagger/swagger.json" '
displayName: 'Create Swagger file'
- task: VSTest@2
displayName: 'Test Assemblies'
inputs:
testAssemblyVer2: |
**\$(BuildConfiguration)\*test*.dll
!**\obj\**
!**\*\*.EndToEnd.Integration.Tests*.dll
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
- task: PublishTestResults@2
displayName: 'Publish API Test Results'
inputs:
testResultsFormat: VSTest
testResultsFiles: '**/*.trx'
- task: PublishSymbols@2
displayName: 'Publish symbols path'
inputs:
PublishSymbols: false
continueOnError: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/app.zip'
ArtifactName: app
- task: PublishBuildArtifacts@1
displayName: 'Publish deploy scripts'
inputs:
PathtoPublish: deploy
ArtifactName: deploy
我有以下任务在光盘上
这是因为上述任务步骤中的“测试文件中的路径”参数不正确。如果是,如何找到正确的路径?我也参考了下面的链接,不过运气不好
构建日志
Project "D:\a\1\s\src\XXXXSearch.Api.sln" (1) is building "D:\a\1\s\src\XXXSearch.EndToEnd.Integration.Tests\XXXSearch.EndToEnd.Integration.Tests.csproj" (6) on node 1 (default targets).
2018-12-23T09:48:50.2267347Z PrepareForBuild:
2018-12-23T09:48:50.2267390Z Creating directory "bin\Release\".
2018-12-23T09:48:50.2269510Z Creating directory "obj\Release\".
Creating "D:\a\1\s\src\XXXXSearch.EndToEnd.Integration.Tests\obj\Release\XXXSearch.EndToEnd.Integration.Tests.csproj.CopyComplete" because "AlwaysCreate" was specified.
2018-12-23T09:48:50.4678280Z _CopyAppConfigFile:
2018-12-23T09:48:50.4678368Z Copying file from "app.config" to "bin\Release\XXXSearch.EndToEnd.Integration.Tests.dll.config".
2018-12-23T09:48:50.4686244Z CopyFilesToOutputDirectory:
2018-12-23T09:48:50.4686316Z Copying file from "obj\Release\XXXSearch.EndToEnd.Integration.Tests.dll" to "bin\Release\XXXSearch.EndToEnd.Integration.Tests.dll".
2018-12-23T09:48:50.4691372Z XXXSearch.EndToEnd.Integration.Tests -> D:\a\1\s\src\XXXSearch.EndToEnd.Integration.Tests\bin\Release\XXXSearch.EndToEnd.Integration.Tests.dll
2018-12-23T09:48:50.4693481Z Copying file from "obj\Release\XXXSearch.EndToEnd.Integration.Tests.pdb" to "bin\Release\XXXSearch.EndToEnd.Integration.Tests.pdb".
2018-12-23T09:48:50.4755662Z Done Building Project "D:\a\1\s\src\XXXSearch.EndToEnd.Integration.Tests\XXXSearch.EndToEnd.Integration.Tests.csproj" (default targets)
在build.yaml
文件中添加了以下任务
- task: CopyFiles@2
inputs:
contents: D:/a/1/s/src/XXX.SiteSearch.EndToEnd.Integration.Tests/bin/Release/XXX.SiteSearch.EndToEnd.Integration.Tests.dll
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
displayName: 'Publish E2E Artifact'
inputs:
PathtoPublish: 'D:/a/1/a/src/XXX.SiteSearch.EndToEnd.Integration.Tests/bin/Release/XXX.SiteSearch.EndToEnd.Integration.Tests.dll'
ArtifactName: e2e
查看正在发布的工件的任务定义:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/app.zip'
ArtifactName: app
- task: PublishBuildArtifacts@1
displayName: 'Publish deploy scripts'
inputs:
PathtoPublish: deploy
在哪里发布测试程序集?回答:没有
如果您不将某个东西发布为工件,那么它在您的发行版的下游将不可用
解决方案是将您的测试程序集(以及其他任何相关文件)作为一个单独的工件发布。查看您正在发布的工件的任务定义:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/app.zip'
ArtifactName: app
- task: PublishBuildArtifacts@1
displayName: 'Publish deploy scripts'
inputs:
PathtoPublish: deploy
在哪里发布测试程序集?回答:没有
如果您不将某个东西发布为工件,那么它在您的发行版的下游将不可用
解决方案是将您的测试程序集(以及其他任何相关文件)作为单独的工件发布。正如您正确提到的,您没有将
测试程序集
放入$(构建配置)
,因为don't不会像问题中提到的那样作为构建的一部分运行E2E
。请详细说明您的评论,即“在您的构建中添加一个步骤,以运行get childitem$env:SYSTEM\u DEFAULTWORKINGDIRECTORY-rec
”添加了与EndToEnd
测试相关的构建日志部分,该部分显示EndToEnd测试dll
已复制。那么,我在CD任务(VsTest-End2End Test)上得到的路径是否不正确?是否有方法将这些测试程序集添加到上述build.yaml
中提到的现有app.zip
?我的另一个困惑是,在构建日志中,这意味着什么?2018-12-23T09:48:50.4691372Z XXXSearch.EndToEnd.Integration.Tests->D:\a\1\s\src\XXXSearch.EndToEnd.Integration.Tests\bin\Release\XXXSearch.EndToEnd.Integration.Tests.dll
。很抱歉,我对这个区域很陌生。@SMPH您不想将它们添加到app.zip
。这是为了部署;您不需要部署测试。添加另一个发布工件步骤,并将测试作为单独的工件发布。@SMPH该程序集不在$(Build.artifactstagindirectory)
中,因为您没有告诉它将所有生成输出放在那里,只放在zip文件中。查看生成输出:D:\a\1\s\src\XXXSearch.EndToEnd.Integration.Tests\bin\Release\XXXSearch.EndToEnd.Integration.Tests.dll
。仅当测试依赖于特定于单个服务器(如消息队列)的内容时,才需要部署测试。如果它们只是普通的旧Selenium/编码UI测试或集成测试,那么您可以从任何可以与适当服务器对话的私有代理运行它们。正如您正确提到的,您没有将测试程序集放入$(BuildConfiguration)
since don't不会像问题中提到的那样在构建过程中运行E2E
。请详细说明您的评论,即“在您的构建中添加一个步骤,以运行get childitem$env:SYSTEM\u DEFAULTWORKINGDIRECTORY-rec
”添加了与EndToEnd
测试相关的构建日志部分,该部分显示EndToEnd测试dll
已复制。那么,我在CD任务(VsTest-End2End Test)上得到的路径是否不正确?是否有方法将这些测试程序集添加到上述build.yaml
中提到的现有app.zip
?我的另一个困惑是,在构建日志中,这意味着什么?2018-12-23T09:48:50.4691372Z XXXSearch.EndToEnd.Integration.Tests->D:\a\1\s\src\XXXSearch.EndToEnd.Integration.Tests\bin\Release\XXXSearch.EndToEnd.Integration.Tests.dll
。很抱歉,我对这个区域很陌生。@SMPH您不想将它们添加到app.zip
。这是为了部署;您不需要部署测试。添加另一个发布工件步骤,并将测试作为单独的工件发布。@SMPH该程序集不在$(Build.artifactstagindirectory)
中,因为您没有告诉它将所有生成输出放在那里,只放在zip文件中。查看生成输出:D:\a\1\s\src\XXXSearch.EndToEnd.Integration.Tests\bin\Release\XXXSearch.EndToEnd.Integration.Tests.dll
。仅当测试依赖于特定于单个服务器(如消息队列)的内容时,才需要部署测试。如果它们只是普通的旧Selenium/编码UI测试或集成测试,那么您可以从任何可以与适当服务器对话的私有代理运行它们。