1. ホーム
  2. unit-testing

[解決済み] Visual Studio 2015または2017でユニットテストが検出されない

2022-04-23 05:17:43

質問

2016-10-19を編集しました。

元の質問は、VS2015 CTP6 特有の XUnit テストランナーに関する問題でした。回答から、Visual Studioのユニットテスト発見に関するより広範な問題があり、それは多くの異なる状況で発生する可能性があることが明らかである。それを反映させるために、私の質問を整理しました。

また、私自身の回答には、同様の問題が発生したときに解決するために現在も使用しているスクリプトを記載しました。

他の多くの回答も、VSテストランナーの複雑さをより理解するのに役立つことが証明されました。私は、人々がまだ彼らの解決策を共有していることに感謝します。


元の質問 2015-04-10。

昨日から、Visual Studio Test Explorerが、どのプロジェクトのテストも検出しなくなりました。また、ビルド後に緑のローディングバーも表示されません。

Visual Studio Test Explorer で "Run All" をクリックするか、任意のテストメソッドを右クリックして "Run Tests" を選択すると、出力ウィンドウに次のように表示されます。

Could not load file or assembly 'Microsoft.VisualStudio.Web.ProjectSystem, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Windows 10 Pro Technical Preview、ビルド10041でVisual Studio 2015 CTP 6を動かしています。.NET Framework のバージョンは関係ないようで、次のような場合に発生します。 4.0 , 4.5.24.6 .

以下のテストフレームワークで試しましたが、どれも同じような挙動になります。

  • Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0
  • xunit v2.1.0-beta1-build2945xunit.runner.visualstudio v2.1.0-beta1-build1051
  • NUnit v2.6.4NUnitTestAdapter v2.0.0

GitHub (xunit)で似たような感じのissueを見つけました。 発見されたテストを取得できない #295 というコメントと、xunitチームからのこのようなコメントがありました。

<ブロッククオート

Visual Studio 2015 CTP 5の不具合が報告されているので注意が必要です xUnit.netに限らず)ユニットテスト全般について多くの人が知っているので は期待しないでください。

また、Visual Studio のランナーをクリーンアップしたことを確認してください。 キャッシュを使用します。これが破損すると、Visual Studioは永久に誤動作をします。 削除されるまで キャッシュを削除するには、すべてのインスタンスをシャットダウンします。 フォルダを削除します。 TEMP%VisualStudioTestExplorerExtensions (正直なところ、これはおそらく TEMP%内の削除可能なものはすべて削除しても問題ないでしょう。)

フォルダを削除するように彼らの提案を試してみました %TEMP%\VisualStudioTestExplorerExtensions . 残念ながら、この問題は解決されませんでした。

私は、ReSharperが実際に いくつかのテストを発見することができます。これはVSとNUnitのテストに対してのみ有効で、xunitに対しては有効ではありません。

しかし、Visual Studioには多くのフォルダがあり、望まない副作用なしにそのすべてを削除できるわけではありません。

解決方法は?

EDIT 2016-10-19 (PowerShellスクリプト)

この問題は今でもたまに再発します。私は小さなPowerShellスニペットを書いて、関連するキャッシュ/tempフォルダ/ファイルのクリアを自動化するようにしました。将来の読者のために、ここでそれを共有します。

@(
"$env:TEMP"
"$env:LOCALAPPDATA\Microsoft\UnitTest"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ComponentModelCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\Designer\ShadowCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ImageLibrary\cache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio Services\6.0\Cache"
"$env:LOCALAPPDATA\Microsoft\WebsiteCache"
"$env:LOCALAPPDATA\NuGet\Cache"
) |% { Remove-Item -Path $_ -Recurse -Force }

事前にVisual Studioを必ず終了させ、その後再起動するのが良いでしょう。

TEMPフォルダの削除は必要ないかもしれませんし、場合によっては望ましくないかもしれませんので、まずはTEMPフォルダを消去せずに試してみることをお勧めします。ただ "$env:TEMP" .

オリジナル回答 2015-04-12

Visual Studio関連のtemp/cacheフォルダを徹底的に掃除したところ、問題が"solve"しました。

ひとつひとつ調べて、その間にテストをする時間がなかったので、残念ながらどれが実際に問題を起こしたのかわかりません。

以上が、私が行った正確な手順です。

  1. Visual Studioを終了
  2. CCleanerでシステムとブラウザをクリア temp ファイル/フォルダー
  3. 以下のファイル/フォルダーを手動で消去/削除しました。

    • %USERPROFILE%\AppData\Local\assembly
    • %USERPROFILE%\AppData\Local\Microsoft\UnitTest
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\Designer\ShadowCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ImageLibrary\cache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio Services\6.0\Cache
    • %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache
    • %USERPROFILE%\AppData\Local\NuGet\Cache
    • %USERPROFILE%\AppData\Local\Temp