0

VisualStudioでマネージC++コードを単体テストする場合、よく知られている問題があります。マネージにコールバックするアンマネージコードは、アプリドメインを越えられず、単体テストがクラッシュします 。 Forums / is / vststest / thread / fc7bc074-ff05-407b-b646-d9e5532c6998 および詳細はこちら:http: //lambert.geek.nz/2007/05/29/unmanaged-appdomain-callback

/ noisolationフラグを使用することは1つの解決策ですが、Visual Studioの外部でテストを実行する場合にのみ機能します。つまり、VisualStudioでテストをデバッグすることはできません。

私にとって、これは大きなことです。少なくとも2006年以来、Microsoftがこの問題に対処したくないことを理解するのに苦労しています。VisualStudio11ベータ版でさえ、ここで新しいものが何も提供されていないことを発見したことは大きな失望でした。

そこで、NUnitを使用して、[すべてのテストに単一のAppDomainを使用する]を選択してテストの実行を開始しました。残念ながら、NUnitは次のメッセージを表示します:「このテストの実行中に未処理のSystem.ArgumentExceptionがスローされました:AppDomain間でGCHandleを渡すことができません。」その後、クラッシュします。

GCHandle AppDomainの問題をデバッグし、回避できるようになることを望んでいました。単一のAppDomainオプションの意味を誤解していますか?NUnit 2.6は別のAppDomainでテストを実行しますが、それを変更するオプションはまだありませんか?

4

1 に答える 1

0

NUnitグループのCharliePooleによるこの回答によると、次のようになります。

https://groups.google.com/forum/?fromgroups&hl=en#!topic/nunit-discuss/elG7oyCOyBw

NUnitメイン(ドライバー)プログラムは、テストされるコードとは異なるAppDomainで実行されます。単一のAppDomainは、テストするすべてのコードに対してのみ単一を意味します。

チャーリーは、「すべて」に単一のAppDomainを使用するNUnitLiteの使用を提案しました。0.7バージョンをテストした後、gcrootを使用するC ++/CLIコードのテストをデバッグできることを嬉しく思います。

Visual StudioでのNUnitLiteのUI統合は素晴らしい追加のボーナスですが、今のところ私はそれなしで生きることができます。

于 2012-05-18T23:57:27.977 に答える