現在、32個の単体テストがあるソリューションに取り組んでいます。私はリシャーパーテストランナーと連携してきました-これは正常に動作します。すべてのテストが実行されており、すべてのテストが正しいテスト結果を示しています。同僚から、Visual Studioのテストエクスプローラーを使用して自分のコンピューターでテストが実行されていないことがわかりました。彼らは私のマシンでも動作していないので、ローカルに存在しないファイルや何かを除外できます。
テストエクスプローラーにはすべてのユニットテストが表示されますが、[すべて実行]をクリックすると、すべてのテストがグレー表示され、テスト実行の結果が表示されません。
[TestClass]
属性が宣言されています[TestMethod]
属性を使用していますobj
、bin
、Debug
およびRelease
フォルダを削除しますこのような動作を引き起こす可能性のあるヒントを感謝します。
プロジェクトがすべてAnyCpuではない場合、次の2つの設定が一致することを確認することもできます。
[テストプロジェクトを右クリック]->プロパティ->ビルド->プラットフォームターゲット-例x64
[メインメニュー]->テスト->テスト設定->デフォルトプロセッサアーキテクチャ-> X64
これらが一致しない場合、テストプロジェクトが静かに実行に失敗することがわかりました。
私はVS 2017でも同じ問題を抱えていました。私の場合、VSを再起動することで解決しました。
MSTestではなくNUnitを使用している場合、Visual Studio 2012/2013では NUnit Test Adapter Extension が必要です。
VoidではなくTaskを返すように非同期テストメソッドを変更する必要がありました。
テストはアクティブになり、テストエクスプローラーで実行可能になりました。
テストの対象となるフレームワーク(nunit、xunit、VSテストなど)を確認し、正しいテストアダプター/ランナー拡張機能がインストールされていることを確認します。
私にとっては、欠落していたのはNUnit 3テストアダプターであり、nunit.framework依存バージョンを見て、必要なバージョン番号を確認しました。
Clean-Rebuild
ソリューションは私のために働いた。
私の場合は、ソリューションの1つのテストプロジェクトにMSTest.TestFrameworkおよびMSTest.TestAdapter nugetパッケージがインストールされていたが、他のプロジェクトにはインストールされていなかったためです。これらのパッケージは、ソリューション内の1つのプロジェクトにインストールされるまでテストを実行する必要はないようです。
問題は、それらが不足しているテストプロジェクトにそれらのパッケージをインストールすることで修正されました。
同じ症状がありました。
ツール-拡張機能と更新プログラムを使用して、適切なVisual Studio拡張機能がインストールされていることを確認してください。私の場合、オンラインオプションからXUnitとSpecflowをインストールする必要がありました。
次に、ソリューションをクリーニングして再構築します。
それでも解決しない場合は、一時ディレクトリをクリアします([スタート]メニューの検索で%temp%を検索し、Tempのすべてのコンテンツを削除します)
そして最後にResharperをアンインストールしてみて、問題を解決しました。
私にとってそれを修正したのは、MS.Test nugetパッケージをアップグレードすることでした
ここでは、テストプロジェクトがビルド対象としてマークされていませんでした。
ビルド->構成マネージャー...->テストプロジェクトのビルドを確認します
この種のエラーでここに来たので、問題/解決策を投稿します:
症状:
問題:
別のスレッド内で例外をスローするコードにエラーがありました。すべてのテストアサーションは合格しましたが、テストの実行はキャンセルされました。 「テスト出力」でエラーを確認できました(NullException)。
私にとってVS2017の再起動は機能しませんでした。 slnをきれいにしなければならなかったので、テストが実行されていないファイルを見つけ、そのファイルのみを実行しました。その後、すべてを実行し、再び正常に動作しました。
私にとって(まったく解決策ではありません)、メニュー[テスト]-> [テスト設定]-> [{現在のファイル}]で.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.
それはそれを止めるようです。
私にとって、これはコードカバレッジを測定するためのVS拡張が原因でした。特定のアセンブリを参照できなかったため、テストを実行しませんでした。以下を使用して、コマンドラインからテストを正常に実行できます。
dotnet test
この問題を解決するには、テストプロジェクトのデバッグフォルダーに[〜#〜] all [〜#〜]依存関係をコピーすることを選択できます。これにより、「未使用の」アセンブリは削除されないため、すべてのアセンブリを解決できます。以下をテストプロジェクトの.csprogファイルに追加できます。
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
私の場合、 NUnit と NUnit3TestAdapter の両方のバージョン3.11.0
をインストールしましたが、プロジェクトファイルにはバージョン2.6.4
への古い参照がありました、新しいインストールでは削除されませんでした。
NUnit
とNUnit3TestAdapter
を再インストールすると、プロジェクトの参照が修正されました。PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall
NUnit
およびNUnit3TestAdapter
をアンインストールしてインストールします。PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter
NUnit(3.11.0)とNunitTestAdapter(3.12.0)nugetパッケージの異なるバージョンがありました。 NUnitを3.12.0に更新すると、Visual Studioはテストを実行しました。