VisualStudioから陽気にテストを走らせていたところ、急にビルドに失敗するようになったり、2回目以降のテストに失敗するようになったりしたので、その対処法を残しておきます。
問題のプロジェクトでは、C++製のDLLを DllImport
で呼び出しており、
どうやらビルド失敗はプロジェクトに含まれるコンテンツ(DLL)がビルド時に出力フォルダへコピーできないこと、
2回目以降のテストが失敗しているのは前回テスト時の情報が(DLL側に)残ってしまっていること、がそれぞれの原因でした。
タスクマネージャを見てみると vstest.executionengine.exe なるプロセスがテスト終了後にも残り続けています。
パフォーマンスを確保するため、VSはテスト構成に変更がない限りこのプロセスを再起動しないようになっているとのことです。
[テスト]>[テスト設定]>[テスト実行エンジンの実行状態を保持する] のチェックを外すことで、テスト終了時にプロセスを終了させることができました。めでたし!