web-dev-qa-db-ja.com

AppDomainが原因でプロジェクト間で交差すると、Resharper 8テストによるNUnitの実行が失敗する

最近、Resharper 8に更新し、一連のプロジェクトを実行しようとしました。これらのテストには、IISExpressを使用してWebサイトを実行し、Webリクエストを作成し、応答をチェックする2つの統合テストスイートが含まれています。

それらを分離して実行することは成功し、すべてのテストの実行は以前は成功していました。ただし、更新後、実行する2番目のテストセットは失敗します。

調査の結果、AppDomain.CurrentDomain.BaseDirectoryは変更せずに実行する最初のテストとして残っています。統合テストは2つのプロジェクトで構成されているため、必要な構成ファイルが見つからないため、2番目のプロジェクトが失敗します。

Resharper 8でこの異なる動作を無効にするオプションが見つかりません。これは、/domain:Single nunitフラグの動作のようです。 Resharper 7にダウングレードする前に、これに対する解決策を知っている人はいますか?そしてそれはResharper 8の意図された動作ですかバグですか?

48
hawx

回避策:

Visual StudioでReSharper-> Options-> Tools-> Unit Testingを試してみましたか?

「最大1つのアセンブリを並行して実行する」設定をより大きな数に変更します。テストプロジェクトごとに1つずつ試しました。マックスはコアの数だと思います。

直観に反することは知っていますが、それは私のために機能し、失敗したテストでAppDomain.CurrentDomain.BaseDirectoryを使用しています

原因 ReSharper 8のキャッシュ最適化バグ。作業ディレクトリが正しく設定されていません。おそらく、並行して実行すると、テストごとに個別のプロセスが作成されるため、お互いの設定をつまずくことはありません。

修正 JetBrainsはこれがバージョン8.0.1で修正されると主張しています

更新:新しい単体テストオプションResharper 8.1に追加され、このシナリオに対応しています。 ReSharper->オプション->ツール->ユニットテスト-> "テストごとに個別のAppDomainを使用してテストしてください。

55
Daniel Dyson

同じ問題が発生します。バグだと思います。参照: http://youtrack.jetbrains.com/issue/RSRP-380761

9
orad

これはResharper 8.0.2で修正されました: http://youtrack.jetbrains.com/issue/RSRP-374143#comment=27-572929

新しいオプションReSharperをチェックすることを忘れないでください。オプション|ツール|ユニットテスト| 「アセンブリをテストするごとに個別のAppDomainを使用して」機能するようにします。

つまり単体テスト設定に新しいオプションが追加されました。

6
Paul Suart