8

テスト プロジェクトをビルドすると、次のようになります。

VS 11 単体テストの予期しないエラー

これにより、VSによって検出されていないため、テストを実行できません。

"Unexpected error detected. Check the Tests Output Pane for details."ウィンドウ下部のメッセージを参照してください。Tests OUTPUT ペインを見ても、何が問題なのかわかりません。これは非常に役に立ちます... :)

VS 11がベータ版であることは知っていますが、以前は機能していました...

私はすでにVSを再起動しましたが、その後も機能しませんでした。

何が起こっているかについてのアイデアはありますか?どこかのバグだろうか。

注: 私が考えることができる唯一のことは、私が以前に行った VS 2010 のアンインストールに関連しています。必要なビットをアンインストールしたのかもしれません。私を殴る...

EDIT 1
VS 11 Beta Ultimate で修復を行いました。コンピューターを一度再起動するように求められたので、再起動しました。その後、修理を続けましたが、12 時間以上動作し続けました。修復プロセスを強制終了しました。

その間、Visual Studio 11 Express for Web をアンインストールしました。これをVS 11 Beta Ultimateと並べてみました。

クレイジーなことに、両方のことを行った後、再び機能し始めました。したがって、何が問題を解決したのかはわかりません。修復プロセスが強制終了されたか、VS 11 Express for Web がアンインストールされたかです。

EDIT 2
私の失望のために、これは断続的なものだと思います。VS 11 Ultimate Beta を再起動しても問題は解決しません。:(

編集 3 Microsoft でConnect チケット
に記入しましたが、再現できないとしてクローズされました。

VS 11 Ultimate Beta 修復オプションで 2 回目の試行を行い、今回は期待どおりに終了しました。問題を特定するために、新しいソリューション内のデフォルト ファイルを使用して新しいテスト プロジェクトを作成し、UnitTest1.csそれをビルドした後、上記と同じエラー画面が表示されます。したがって、修復オプションは問題を解決しませんでした。システムに何かが欠けているようです。

これは、VS About ウィンドウからの情報です。

Microsoft Visual Studio 11
Version 11.0.50323.1 QRELB
Microsoft .NET Framework
Version 4.5.50131 QRELB

Installed Version: Ultimate

EDIT 4ここ
で同様の問題を見つけましたが、DLLが記述されていないため、私の場合はそこにある解決策は適用されません。

EDIT 5 Aseem Bansal (Microsoft の従業員)の
助けを借りて、最終的にログを取得し、この例外を見ました:

W, 2124, 19, 2012/04/19, 11:51:32.644, 53768626724, devenv.exe, Exception occured while initialization System.InvalidOperationException: Cannot start process because a file name has not been provided.
   at System.Diagnostics.Process.Start()
   at Microsoft.VisualStudio.TestPlatform.Core.Utilities.CommonUtilities.LaunchProcess(String exeFileName, String commandLineArguments, String workingDirectory, IDictionary`2 environmentVariables)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.SetupProcess(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.Initialize_NoLock(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.EnsureInitialized(Boolean forceX86Discoverer)
   at Microsoft.VisualStudio.TestPlatform.Client.TestRunnerServiceClient.EnsureInitialized_NoError(Boolean forceDiscoveryInX86Mode)

EDIT 6コマンドラインツール
を使用してテストを実行しようとしました(オプションの有無にかかわらず)。ここで見られるように、テストは期待どおりに実行されます。したがって、問題は実際には VS 11 Beta 内の何かです。mstest.exe/noisolation

4

5 に答える 5

3

レニエル

この問題を提起していただきありがとうございます。

ここで説明したように、これはシャドウ コピーが問題の原因であることを示しています。

が、現在観察しているような一時的なパスからではなくMicrosoft.VisualStudio.TestPlatform.Core.dll、インストール先のパスからロードされていることを確認してください。これで問題が解決するはずです。%VSInstallDir%\Commmon7\IDE\CommonExtensions\Microsoft\TestWindow%appData%\assembly\dl3\

また、最新のコードでロジックを改善したことをお知らせしたいと思います。改善されたロジックにより、バイナリがどこから読み込まれるかは問題ではなくなり、問題なく動作するようになります。

よろしく

アシーム・バンサル

于 2012-04-25T12:06:15.613 に答える
3

相関関係が見つかりました:

NuGet 自動プルが有効になっている場合、約 15 回のビルド後に VS 11 でこの問題が発生します。Packages フォルダーを削除し、ビルド修正時に依存関係を強制的に再プルします。

また、ソリューション ルートの obj/bin フォルダーを手動で消去すると、ソリューションが修正されることにも気付きました。

したがって、これは、テスト スイートがキャッシュされた dll を現在のソリューション構成の dll で更新していないように聞こえると思います。編集すると、dll が同期しなくなり、単体テスト フィクスチャの開始に失敗します。

お役に立てれば。

于 2012-05-07T00:08:39.387 に答える
1

私はこの問題を抱えていました。@chrisortman のコメントで提案を試みたところ、問題は解決しました。

彼は削除を提案しました: %appdata%\assembly\dl3

ここで見つけましたが: %appdata%..\..\Local\dl3

私は気が狂っていた。本当に怒っています。

于 2012-07-26T21:07:56.613 に答える
0

もう1つのポイント:

Environment.ExitCode = 0;

クリーンアップ中に各テストの最後に追加する必要があります! 私はこの難しい方法を学びました。MS ユニット テスト フレームワークはこれをチェックし、前のテストのゼロ以外の ExitCode で次のテストを実行しません!

これは非常に良いスレッドです。私はこのスレッドで単体テストの問題をほぼすべて解決しています。

于 2015-04-29T21:14:12.637 に答える