无法让Azure DevOps识别并运行我的NUnit测试

无法让Azure DevOps识别并运行我的NUnit测试,azure,nunit,azure-pipelines,Azure,Nunit,Azure Pipelines,我正试图让我的NUnit测试在Azure DevOps管道中运行。然而,尽管我可以看到我的项目正在建设中: Done Building Project "D:\a\3\s\Src\Standard\Splyce.Standard.Common.Tests\Splyce.Standard.Common.Tests.csproj" (default targets). 我仍然得到以下信息: ##[warning]No test assemblies found matching the patte

我正试图让我的NUnit测试在Azure DevOps管道中运行。然而,尽管我可以看到我的项目正在建设中:

Done Building Project "D:\a\3\s\Src\Standard\Splyce.Standard.Common.Tests\Splyce.Standard.Common.Tests.csproj" (default targets).
我仍然得到以下信息:

##[warning]No test assemblies found matching the pattern: **\*test*.dll,!**\*TestAdapter.dll,!**\obj\**.
我按照中的说明添加“vsTest-Test Assemblies”步骤,没有更改任何设置

我的测试项目包括NUnit3测试适配器:

所以我很确定这只是一个路径问题。但是,部件选择器上的全局搜索应该可以找到它。这是有关解决方案的磁盘上文件夹结构:

更新:显示物理磁盘布局包括Src。

E:.
+---BuildProcessTemplates
\---Src
    +---AgentApiServer
    |   +---Splyce.AgentApi.Common
    |   |   +---bin
    |   |   |   \---Debug
    |   |   |       \---netcoreapp2.1
    |   |   +---MirrorEngine
    |   |   |   \---Framework
    |   |   |       +---Dtos
    |   |   |       +---Enums
    |   |   |       +---Events
    |   |   |       \---Interfaces
    |   |   \---obj
    |   |       \---Debug
    |   |           \---netcoreapp2.1
    |   \---Splyce.AgentApi.Server
    |       +---bin
    |       |   \---Debug
    |       |       +---netcoreapp2.0
    |       |       +---netcoreapp2.1
    |       |       \---netcoreapp2.2
    |       +---obj
    |       |   \---Debug
    |       |       +---netcoreapp2.0
    |       |       +---netcoreapp2.1
    |       |       \---netcoreapp2.2
    |       +---Properties
    |       \---wwwroot
    \---Standard
        +---Common
        +---packages
        |   +---NUnit.3.11.0
        |   |   +---build
        |   |   \---lib
        |   |       +---net20
        |   |       +---net35
        |   |       +---net40
        |   |       +---net45
        |   |       +---netstandard1.4
        |   |       \---netstandard2.0
        |   +---NUnit3TestAdapter.3.13.0
        |   |   \---build
        |   |       +---net35
        |   |       \---netcoreapp1.0
        |   \---Shouldly.3.0.2
        |       \---lib
        |           +---net40
        |           +---net451
        |           +---netstandard1.3
        |           \---netstandard2.0
        +---Splyce.Standard.Common
        |   +---bin
        |   |   \---Debug
        |   |       \---netstandard2.0
        |   +---Helpers
        |   \---obj
        |       \---Debug
        |           \---netstandard2.0
        +---Splyce.Standard.Common.Tests
        |   +---bin
        |   |   +---Debug
        |   |   \---Release
        |   +---obj
        |   |   \---Debug
        |   |       \---TempPE
        |   \---Properties
        +---Splyce.Standard.DbMigrations
        |   +---bin
        |   |   \---Debug
        |   |       \---netstandard2.0
        |   +---Dtos
        |   +---Framework
        |   |   +---DbUp
        |   |   +---Dtos
        |   |   |   \---DatabaseMigrationsManager
        |   |   +---Enums
        |   |   \---Events
        |   \---obj
        |       \---Debug
        |           \---netstandard2.0
        +---Splyce.Standard.Messaging
        |   +---bin
        |   |   \---Debug
        |   |       \---netstandard2.0
        |   +---Client
        |   |   +---Publisher
        |   |   \---Subscriber
        |   +---Framework
        |   |   +---Interfaces
        |   |   \---Messages
        |   +---Messages
        |   |   +---Health
        |   |   \---Mirroring
        |   \---obj
        |       \---Debug
        |           \---netstandard2.0
        \---UnitTestProject1
            +---bin
            |   \---Debug
            |       \---netcoreapp2.2
            \---obj
                \---Debug
                    \---netcoreapp2.2

这里有谁能告诉我一些关于如何让Azure找到我的测试程序集的想法。

你搜索的根文件夹是什么?默认情况下,这也是用于查找测试适配器的根文件夹。默认值是存储库根目录,但由于您正在构建特定的
csproj
,我怀疑您可能已将其范围限定为项目根目录,而不是解决方案根目录

您可以覆盖到测试适配器的更特定路径:

您可能应该在其中粘贴以下内容:
$(Build.SourcesDirectory)\packages\


如果您的项目是.NET Core,您也可以尝试运行
dotnet test
任务,而不是
vstest
我遇到了类似的问题,但根本原因与我的VSBuild任务上的msbuildArgs参数设置为“/target:Publish”有关。VSBuild日志让我知道该项目无法发布,这也阻止了它的构建

已完成生成项目“D:\BuildAgents\Agent03\u work\1\s\Calculators\Calculators.csproj”(发布目标)。 项目“D:\BuildAgents\Agent03\u work\1\s\Workbench.sln”(1)正在节点1(发布目标)上生成“D:\BuildAgents\Agent03\u work\1\s\Calculators.Tests\Calculators.Tests.csproj”(5)。 _部署不可发布: 跳过不可发布的项目。 已完成生成项目“D:\BuildAgents\Agent03\u work\1\s\Calculators.Tests\Calculators.Tests.csproj”(发布目标)

我的决定只是添加一个额外的构建任务。以下是我更新的yaml:

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    vsVersion: '16.0'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: '**\*Test*.dll'
    searchFolder: '$(System.DefaultWorkingDirectory)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    vsVersion: '16.0'
    platform: '$(buildPlatform)'
    msbuildArgs: '/target:Publish'
    configuration: '$(buildConfiguration)'

随后是CopyFiles和PublishBuildArtifacts任务。

生成的dll称为类似于
*test*.dll
?是的,例如Splyce.Standard.Common.Tests。$(System.DefaultWorkingDirectory)\packages\生成错误,表明packages文件夹不存在。我似乎无法找到各种变量是什么,因此我可以尝试其他变量。测试项目是.NET 4.6.1测试.NET标准2.0类库。改为使用Build.SourcesDirectory。这是我的错误,我有$(Build.SourcesDirectory)\packages,但失败了。查看输出,我发现$(Build.SourcesDirectory)\Src\Standard\packages可能就是它所需要的。现在,虽然路径存在(因此没有错误),但我仍然没有生成任何测试。我已更新磁盘布局,因为我怀疑由于解决方案位于文件夹中,这会导致问题。或者我需要提供\Src的根基本文件夹?您是否尝试过在packages文件夹中指向一个非常特定的包,或者使用脚本将DLL复制到测试项目的bin文件夹中?