4

NUnit 単体テスト用のカスタム クラス ライブラリを作成しました。{project root}\bin\Debug\ フォルダーに、.NET IL コードを含む dll ファイルが作成されました。このクラス ライブラリで NUnit ユニット テストを実行すると問題なく動作しますが、クラス ライブラリを再度コンパイルしようとすると、このエラーが発生します。NUnit がロックを解除していません。これは何が原因ですか?これを防ぐにはどうすればよいですか?

NUnit を初めて実行した後にコンパイルするときの Visual Studio エラー:

エラー {エラー #} {クラス ライブラリ プロジェクト名} ファイル {クラス ライブラリ プロジェクト ルート フォルダー} + "\bin\Debug\Tests.dll" を "bin\Debug\Tests.dll" にコピーできません。別のプロセスで使用されているため、プロセスはファイル 'bin\Debug\Tests.dll' にアクセスできません。

したがって、コードを変更できる唯一の方法は、NUnit を閉じて NUnit を再度開くことです。NUnit 2.6 を使用しています。それは非常に迷惑です。

4

2 に答える 2

1

原因を見つけました。おそらく、NUnit開発者はこれを修正できます。今のところ、以下に説明する回避策があります。

* .nunit、*。VisualState.xml(自動生成されたNUnitファイル)および* .config(NUnitの構成ファイル設定ではなくSystem.Configurationを使用してVisual Studioクラスライブラリから参照されるNUnit構成ファイル)が内部にない場合クラスライブラリのルートフォルダの場合、これが発生します。(そして、私の*.configファイルは私の*.nunitファイルと同じ名前なので、Tests.configとTest.nunitがあり、どちらも「Tests」という名前を共有しています)

したがって、たとえば、このエラーが発生した場合、次の設定があります。

私のクラスライブラリは「Tests.csproj」と呼ばれています。そして、Tests.csprojが "C:\ Source \Tests\"にあるとします。これにより、「C:\ Source \Tests\」がプロジェクトフォルダーのルートになります。私のdllは「C:\ Source \ Tests \ bin \ Debug\Tests.dll」にあります。また、上記のNUnitファイルは「C:\ Source \ Tests \NUnit\」にあります。

NUnitファイルを"C:\ Source \ Tests \"(クラスライブラリプロジェクトのルートフォルダー)に移動すると、VisualStudioクラスライブラリプロジェクトをコンパイルしようとしてもこの問題は発生しません。これを引き起こすこのフォルダ構造は、NUnitプログラムを混乱させる必要があります。

別のフォルダーを使用する理由は、すべてのNUnitファイルを分離しておくためです。これを修正した後、すべての* .nunit、*。xml、および* .configファイルに「nunit_」というプレフィックスを付けて、すべてがグループ化されるようにしました。

于 2012-04-09T17:14:38.593 に答える
1

これに対処する唯一の方法は、NUnit を再起動することです。これによりロックが解除されますが、次にテストを実行するときに同じ問題が発生する可能性があります。

ただし、次の情報が役立つ可能性があります。

これは、このGoogleグループのスレッドによると、リロード設定である可能性があります

アセンブリの分離セクションを参照してください

または最後に:

それはあなたのコードベースの場所でしょうか?

于 2012-04-09T17:00:14.167 に答える