2009-08-12 13 views
1

IntervalZero's RTX productのネイティブコールをラップするためのマネージコードを作成しています。 RTXは基本的にカーネルプロキシを設定することで、Windows上でリアルタイムコーディングを可能にします。ここで重要なのは、DllMainがDLL_THREAD_ATTACHで呼び出されたときにRTXがプロキシを生成することです(DLL_THREAD_DETACHでそれを破棄します)。そのプロキシが生成されておらず、あなたがライブラリーに電話をかけた場合は、即時BSODが得られます。ThreadPoolを使用してmstest *を実行しないでください

mstest.exeが単体テストを実行すると、99.9%の確率で、ThreadPoolクラスを使用してキューに入れます(これはこの動作を説明する唯一のものです)。残念ながら、RTXライブラリがロードされる前にスレッドが既に作成されているため、DllMainは呼び出されず、RTXサブシステムはその存在を認識しないため、単体テストがライブラリに呼び出されようとすると、 。

私は本当にこのようなものに対して単体テストを実行できる必要があるので、合理的で自動化可能なテストカバレッジを得ることができます。各テストの実行時に新しいスレッドを生成するようにmstestに指示する方法はありますか?私は通常、それを行うのが遅くなることを知っていますが、それはまだ青い画面の後に戻ってくるよりも速くなるだろう。

答えて

0

私の受け入れ率はこのような質問のために低いので、私は答えを提供します(私は好きではありませんが)。私はmstestを別々に動作させることは考えていません(つまり、テストごとに1つのスレッドを使用するなど)。私は想像を絶するものすべてを試しました。これを回避するには、テストをロードして実行するためにリフレクションを使用したシンプルなテストランナーアプリを作成する必要がありました。これを行うことで、私はmstest構文を維持しました(ただし、機能はほとんどありません)。

長期的には、RTX APIがマッサージをよりフレンドリーにする必要があります。私は次のリリースでそれを取得しようとOEMと協力しています。

0

nUnitのようなMSTestとは異なるフレームワークを使用して問題が再現されているかどうか試してみましたか?

+0

まだありません。私は既に他のすべての仕事のために使用しているツールセット内にとどまることを望んでいます。 – ctacke

関連する問題