[解決済み] Visual Studio 2015または2017でユニットテストが検出されない
質問
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.2
と
4.6
.
以下のテストフレームワークで試しましたが、どれも同じような挙動になります。
-
Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0
-
xunit v2.1.0-beta1-build2945
とxunit.runner.visualstudio v2.1.0-beta1-build1051
-
NUnit v2.6.4
とNUnitTestAdapter 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"しました。
ひとつひとつ調べて、その間にテストをする時間がなかったので、残念ながらどれが実際に問題を起こしたのかわかりません。
以上が、私が行った正確な手順です。
- Visual Studioを終了
-
CCleanerでシステムとブラウザをクリア
temp
ファイル/フォルダー -
以下のファイル/フォルダーを手動で消去/削除しました。
-
%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
-
関連
-
[解決済み】Javaプロジェクト。ApplicationContextのロードに失敗しました
-
[解決済み】Angular 2 Unit Tests。名前 'describe' が見つからない
-
[解決済み] ユニットテストはゲッターとセッターのために書くべきですか?
-
[解決済み] モッキングフレームワークにおけるモッキングとスパイの比較
-
[解決済み] Go の testing パッケージを使用してテストのセットアップを行うにはどうすればよいですか?
-
[解決済み] スタブとは?
-
[解決済み] Junit: 統合テストと単体テストの分割
-
[解決済み] Go言語でのテストに適したパッケージの命名法
-
[解決済み] TDDとBDDの主な違いは何ですか?[クローズド]
-
[解決済み] Enzyme - How to access and set <input> value?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Assert.Fail()はバッドプラクティスとみなされるか?
-
[解決済み] How to Fix this C# issue No test matches given testcase filter `FullyQualifiedName =
-
[解決済み] フェイク、モッキング、スタビングの違いとは?
-
[解決済み] ユニットテストの命名のベストプラクティス [終了しました]。
-
[解決済み] プライベートメソッドをテストすべきか、パブリックメソッドのみをテストすべきか?[クローズド]
-
[解決済み】Angular 2 Unit Tests。名前 'describe' が見つからない
-
[解決済み】Unit Testsの一般的な命名規則にはどのようなものがありますか?[クローズド]。
-
[解決済み] Unit Testsでランダムデータ?
-
[解決済み] Goでテストカバレッジを測定する方法
-
[解決済み] ファイルシステムに依存するコードの単体テスト