找不到与以下模式匹配的测试程序集:** \ * Test * .dll,!** \ * TestAdapter.dll,!** \ obj \ **

时间:2018-09-19 05:00:44

标签: azure-pipelines

基于单元测试的成功,我试图在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源代码控制后成功。

Log

screen 1
screen 2 screen 3 screen 4 screen 5 [屏幕6]

4 个答案:

答案 0 :(得分:7)

“旧” .NET的文件位于Release文件夹中(由BuildConfiguration变量描述)。

.NET Core构建包含一个额外的文件夹:

Folder structure

YourNamespaceHere.UnitTests > bin > Release > netcoreapp2.1 > dll's

当您添加额外的通配符时,构建将找到unittest dll的。

**\$(BuildConfiguration)\*\*unittests.dll

我将*Tests*部分重命名为*unittests.dll,因为我的项目还包含集成测试。

enter image description here

答案 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

我的测试代理工件下载部分: enter image description here

我的测试任务的选择配置: enter image description here

答案 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)'