web-dev-qa-db-ja.com

テストエクスプローラーで実行されていないテスト

現在、32個の単体テストがあるソリューションに取り組んでいます。私はリシャーパーテストランナーと連携してきました-これは正常に動作します。すべてのテストが実行されており、すべてのテストが正しいテスト結果を示しています。同僚から、Visual Studioのテストエクスプローラーを使用して自分のコンピューターでテストが実行されていないことがわかりました。彼らは私のマシンでも動作していないので、ローカルに存在しないファイルや何かを除外できます。

テストエクスプローラーにはすべてのユニットテストが表示されますが、[すべて実行]をクリックすると、すべてのテストがグレー表示され、テスト実行の結果が表示されません。

enter image description here

  • すべてのテストクラスはパブリックです
  • すべてのテストクラスで[TestClass]属性が宣言されています
  • すべてのテストメソッドは[TestMethod]属性を使用しています
  • 生産性コードとテストプロジェクトの両方が.NET 3.5を対象としています。
  • 私はすでに自分のソリューションをきれいに構築しようとしました、そして/またはすべてのobjbinDebugおよびReleaseフォルダを削除します

このような動作を引き起こす可能性のあるヒントを感謝します。

52
ElGauchooo

プロジェクトがすべてAnyCpuではない場合、次の2つの設定が一致することを確認することもできます。

  1. [テストプロジェクトを右クリック]->プロパティ->ビルド->プラットフォームターゲット-例x64

  2. [メインメニュー]->テスト->テスト設定->デフォルトプロセッサアーキテクチャ-> X64

これらが一致しない場合、テストプロジェクトが静かに実行に失敗することがわかりました。

85
Joseph Simpson

私はVS 2017でも同じ問題を抱えていました。私の場合、VSを再起動することで解決しました。

39
Pablo Rausch

MSTestではなくNUnitを使用している場合、Visual Studio 2012/2013では NUnit Test Adapter Extension が必要です。

15
Piers Myers

VoidではなくTaskを返すように非同期テストメソッドを変更する必要がありました。

テストはアクティブになり、テストエクスプローラーで実行可能になりました。

11
Kevin Mills

テストの対象となるフレームワーク(nunit、xunit、VSテストなど)を確認し、正しいテストアダプター/ランナー拡張機能がインストールされていることを確認します。

私にとっては、欠落していたのはNUnit 3テストアダプターであり、nunit.framework依存バージョンを見て、必要なバージョン番号を確認しました。

6
benmccallum

Clean-Rebuildソリューションは私のために働いた。

5
Eugene

私の場合は、ソリューションの1つのテストプロジェクトにMSTest.TestFrameworkおよびMSTest.TestAdapter nugetパッケージがインストールされていたが、他のプロジェクトにはインストールされていなかったためです。これらのパッケージは、ソリューション内の1つのプロジェクトにインストールされるまでテストを実行する必要はないようです。

問題は、それらが不足しているテストプロジェクトにそれらのパッケージをインストールすることで修正されました。

5
SteveC

同じ症状がありました。

ツール-拡張機能と更新プログラムを使用して、適切なVisual Studio拡張機能がインストールされていることを確認してください。私の場合、オンラインオプションからXUnitとSpecflowをインストールする必要がありました。

次に、ソリューションをクリーニングして再構築します。

それでも解決しない場合は、一時ディレクトリをクリアします([スタート]メニューの検索で%temp%を検索し、Tempのすべてのコンテンツを削除します)

そして最後にResharperをアンインストールしてみて、問題を解決しました。

3
Gina

私にとってそれを修正したのは、MS.Test nugetパッケージをアップグレードすることでした

2
user2945722

ここでは、テストプロジェクトがビルド対象としてマークされていませんでした。

ビルド->構成マネージャー...->テストプロジェクトのビルドを確認します

1
CountOren

この種のエラーでここに来たので、問題/解決策を投稿します:

症状:

  • すべてのテストが実行されているわけではありませんが、プロジェクトごとに依存しているわけではなく、それらの一部のみが実行されています。
  • 実行されたものはすべて緑色でした。
  • 技術スタック:ドットネットコア/ XUnit/FluentAssertions
  • すべてのテストが検出され、変更された場合は更新されます。
  • 「実行されていないテスト」を複数回選択または実行することにより、実行できました。

問題:

別のスレッド内で例外をスローするコードにエラーがありました。すべてのテストアサーションは合格しましたが、テストの実行はキャンセルされました。 「テスト出力」でエラーを確認できました(NullException)。

1
OriolBG

私にとってVS2017の再起動は機能しませんでした。 slnをきれいにしなければならなかったので、テストが実行されていないファイルを見つけ、そのファイルのみを実行しました。その後、すべてを実行し、再び正常に動作しました。

1
Ray

私にとって(まったく解決策ではありません)、メニュー[テスト]-> [テスト設定]-> [{現在のファイル}]で.testsettingsファイルを選択解除して、現在使用されているファイルのチェックを外しました。

私の場合、そう始まります。

<TestSettings name="Local (with code coverage)" id="e81d13d9-42d0-41b9-8f31-f719648d8d2d" xmlns="http://Microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Deployment>
    <DeploymentItem filename="ConfigurationImportExportTest\Configurations\" />
    <DeploymentItem filename="output\Debug\" />
  </Deployment>
  <Execution>

DeploymentItemが干渉しているようです。

これは[出力]タブにあったためです。

Warning: Test Run deployment issue: The Assembly or module 'Microsoft.SqlServer.Management.SqlParser' directly or indirectly referenced by deployment item 'output\Debug\' specified by the test settings was not found.
.... more of the same

たくさん教えてくれません。
すべてのプロジェクトがコンパイル製品を共通の\output\Debugフォルダ

しかし、それはそれを妨げないようです。それは次のようなものに言及する別の警告を出します

A testsettings or runsettings file with `ForcedLegacyMode = TRUE or VSMDI files are not supported by MSTest-V2.

それはそれを止めるようです。

0
Robetto

私にとっての解決策は、Resharper Unit Testing設定「Default platform architecture」を「x64」に変更することでした

enter image description here

0
Dharmesh Tailor

私にとって、これはコードカバレッジを測定するためのVS拡張が原因でした。特定のアセンブリを参照できなかったため、テストを実行しませんでした。以下を使用して、コマンドラインからテストを正常に実行できます。

dotnet test

この問題を解決するには、テストプロジェクトのデバッグフォルダーに[〜#〜] all [〜#〜]依存関係をコピーすることを選択できます。これにより、「未使用の」アセンブリは削除されないため、すべてのアセンブリを解決できます。以下をテストプロジェクトの.csprogファイルに追加できます。

<PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

さまざまなバージョンのNUnitへの参照について、プロジェクトファイルをチェックインします。

私の場合、 NUnitNUnit3TestAdapter の両方のバージョン3.11.0をインストールしましたが、プロジェクトファイルにはバージョン2.6.4への古い参照がありました、新しいインストールでは削除されませんでした。

  • 解決策(参照の問題を修正するために推奨、 docs を参照):

    NUnitNUnit3TestAdapterを再インストールすると、プロジェクトの参照が修正されました。
PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall
  • 解決策2(再インストールしても参照が修正されない場合):

    NUnitおよびNUnit3TestAdapterをアンインストールしてインストールします。
PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter
0
Yasel

NUnit(3.11.0)とNunitTestAdapter(3.12.0)nugetパッケージの異なるバージョンがありました。 NUnitを3.12.0に更新すると、Visual Studioはテストを実行しました。

0
Krzysztof