web-dev-qa-db-ja.com

次のパターンに一致するテストアセンブリが見つかりません:** \ * Test * .dll、!** \ * TestAdapter.dll、!** \ obj \ **

ユニットテストの成功に基づいて、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のドキュメント は単純なように見えますが、私がフォローすると機能しません。

ホストされているVS2017エージェントを使用しています。 CIビルド自体は、TFSソース管理へのチェックイン時に成功します。

ログ

画面1
画面2画面画面4画面5 [画面6]

12
Andy Miller

「古い」.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

4
JeroenW

.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)'
1
Antebios

単体テストタスクを実行したいときにも同じ問題が発生しました(.Net Coreを使用しています)。パスの命名の問題のようです。私のユニットテストプロジェクトが呼び出されます

SimpleExample.UnitTests

しかし、YAMLファイルの「DotNetCoreCLI @ 2」タスクのパスは、

'**/*テスト/*.csproj'

したがって、単体テストタスクのプロジェクトパスをVisual Studioの単体テストプロジェクトの2番目の部分(ドットの後)のように変更するだけです。

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)'
1
Alireza Sattari

同じ問題があり、さまざまなファイルマッチングパターンや.NET Coreのバージョンなどを試してみました。

私のビルドパイプラインは、テストをアーティファクトディレクトリに公開していました。これは、publishコマンドで簡単に実行できます。しかし、私のテストエージェントはアーティファクトをダウンロードしておらず、それが問題でした。デプロイメントとテストに異なるエージェントを使用していたため、デプロイメントエージェントはリソースにアクセスできたがテストエージェントはアクセスできなかったため、問題が発生していることに気付きませんでした。

エージェント構成タブの[アーティファクトのダウンロード]セクションでアーティファクトをダウンロードするように選択したことを確認します。それはずっと下にあり、私はデフォルトでそれが私のビルドパッケージを示したと思います、それはそれがダウンロードされているように思わせます。しかし、私はまだそれを拡張して、「すべてのアーティファクトを選択する」オプションをチェックする必要がありました。正しく構成されている場合、デプロイメントログに「アーティファクトのダウンロード」タスクが含まれているはずです。

私のビルドパイプラインの公開タスク:

- 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

0