基于单元测试的成功,我试图在Azure DevOps(VSTS)中实现门控检入过程。但是,我一直收到这样的警告/错误:找不到程序集。
##[warning]No test assemblies found matching the pattern: **\*Test*.dll,!**\*TestAdapter.dll,!**\obj\**.
##[debug]Processed: ##vso[task.issue type=warning;]No test assemblies found matching the pattern: **\*Test*.dll,!**\*TestAdapter.dll,!**\obj\**.
======================================================
我的所有单元测试都在Visual Studio 2017的本地“测试资源管理器”中成功运行。
Azure DevOps documentation看起来很简单,但是当我遵循它时它不起作用。
我正在使用Hosted VS2017代理。 CI Build本身在签入TFS源代码控制后成功。
答案 0 :(得分:7)
“旧” .NET的文件位于Release文件夹中(由BuildConfiguration
变量描述)。
.NET Core构建包含一个额外的文件夹:
YourNamespaceHere.UnitTests > bin > Release > netcoreapp2.1 > dll's
当您添加额外的通配符时,构建将找到unittest dll的。
**\$(BuildConfiguration)\*\*unittests.dll
我将*Tests*
部分重命名为*unittests.dll
,因为我的项目还包含集成测试。
答案 1 :(得分:4)
在.Net Core 2.1项目中,我遇到了同样的问题。您要在“其他控制台选项”中添加:
/Framework:.NETCoreApp,Version=v2.1 /logger:console;verbosity="normal"
请注意,我还有另一个与此无关的问题,但在同一任务上。我收到有关找不到TestPlatform dll的测试文件结果输出的错误。因此,我将此过滤器添加到现有的测试文件中:
!**\*Microsoft.VisualStudio.TestPlatform*
我的最终Yaml看起来像这样:
- task: VSTest@2
displayName: 'Run Unit Tests'
inputs:
testAssemblyVer2: |
**\$(BuildConfiguration)\*test*.dll
**\$(BuildConfiguration)\**\*test*.dll
!**\*Microsoft.VisualStudio.TestPlatform*
!**\obj\**
vstestLocationMethod: 'location'
vstestLocation: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform\'
codeCoverageEnabled: True
otherConsoleOptions: '/platform:x64 /Framework:.NETCoreApp,Version=v2.1 /logger:console;verbosity="normal" '
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
答案 2 :(得分:1)
我遇到了同样的问题,花了很长时间尝试不同的文件匹配模式,.NET Core版本等。
我的构建管道正在将测试发布到工件目录,您可以使用发布命令方便地进行操作。但是我的测试代理没有下载工件,这就是问题所在。我正在使用不同的代理进行部署和测试,所以我没有注意到有什么问题,因为部署代理可以访问资源,而测试代理却没有。
确保已选择在代理程序配置选项卡的“工件下载”部分中下载工件。它一直都在下降,我认为默认情况下它显示了我的构建包,使我认为它正在被下载。但是我仍然必须对其进行扩展,并勾选“选择所有工件”选项。如果配置正确,则在部署日志中应该有一个“下载工件”任务。
我的构建管道的发布任务:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: false
projects: '**/*ServiceTests.csproj'
arguments: '-c $(buildConfiguration) -o $(Build.ArtifactStagingDirectory)/servicetests'
modifyOutputPath: false
zipAfterPublish: false
答案 3 :(得分:0)
当我要运行单元测试任务时,我遇到了同样的问题(我使用的是.Net Core)。似乎是路径命名问题。我的单元测试项目称为
SimpleExample.UnitTests
但是YAML文件中“ DotNetCoreCLI @ 2”任务的路径设置为
'** / *测试/ *。csproj'
因此,我只是将单元测试任务的项目路径更改为类似于Visual Studio中我的单元测试项目的第二部分(点后)。
我在Visual Studio 2017中的单元测试项目的路径: Desktop\Azure-DevOps-Test\SimpleExample.UnitTests
运行单元测试的YAML任务[对于.Net项目]:
- task: DotNetCoreCLI@2
displayName: 'Runing Unit Tests'
inputs:
command: test
projects: '**/*UnitTests/*.csproj'
arguments: '--configuration $(buildConfiguration)'