相互運用アセンブリでコード カバレッジ分析を取得することはできますか?

StackOverflow https://stackoverflow.com/questions/99520

質問

MSDN フォーラムでもこの質問をしましたが、解決策が見つかりませんでした。

http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3686852&SiteID=1

私が見たところ、ここでの基本的な問題は、相互運用アセンブリには、(おそらく少数のデリゲートを除いて) インストルメント可能な IL​​ が実際には含まれていないことです。したがって、相互運用層を実行するテスト プロジェクトを組み立てることはできますが、 幾つか 実際に呼び出しているメソッドとプロパティの一部です。

プラン B は、RCWW (Runtime Callable Wrapper Wrappers) のライブラリを作成するコード ジェネレーターを作成し、それをコード カバレッジの目的で計測することです。

編集:@フランシ・ペノフ

はい、まさにそれが私がやりたいことです。弊社に納品された COM コンポーネントは、約 10 個の DLL を含む数十個の DLL のライブラリを構成しています。3000種類。私たちにライブラリを提供するグループは最小限のテストを行うため、私たちはアプリケーションでそのライブラリを使用し、相互運用層のテストを担当します。コード カバレッジにより、すべてのインターフェイスとコクラスが確実に実行されるようになります。私がやろうとしているのはそれだけです。独自のマネージ コードを実行する別のテスト プロジェクトがあります。

はい、理想的には、COM サーバー チームが独自のコードをテストして分析する必要がありますが、私たちは理想的な世界に住んでいないため、私は彼らの作業に基づいて高品質の製品を提供する必要があります。コード インターフェイスの 80% をテストし、そのうちの 50% が宣伝どおりに動作しないことを示すテスト レポートを作成できれば、問題の回避策ではなく、修正が必要な箇所を修正することができます。

あなたが言及したモックレイヤーは便利ですが、相互運用レイヤー自体をテストするという最終的な目標は達成できませんし、手動でメンテナンスすることは絶対にやりたくありません。インターフェースへの変更点。

上で述べたように、次のステップは、ラッパーのラッパーを生成し、テスト目的でそれらをインストルメント化することです。

役に立ちましたか?

解決

あなたの質問に答えると、コードカバレッジのために相互運用アセンブリをインストルメント化することはできません。これらにはメタデータのみが含まれており、あなた自身が述べているように、実行可能コードは含まれていません。

それに、相互運用アセンブリのコード カバレッジを試みるのはあまり意味がありません。作成したコードのコード カバレッジを測定する必要があります。

あなたが言及した MDN フォーラムのスレッドから、コードが COM コンポーネントをどのように使用するかを実際に測定したいようです。コードの目標が COM オブジェクトのすべてのメソッドとプロパティを列挙して明示的に呼び出すことでない限り、コード カバレッジを測定する必要はありません。コードが適切なタイミングで適切なメソッド/プロパティを呼び出していることを確認するには、単体/シナリオ テストが必要です。

私の考えでは、これを行う正しい方法は、COM オブジェクトのモック レイヤーを作成し、すべてのメソッド/プロパティが期待どおりに呼び出されているかどうかをテストすることです。

他のヒント

プランC:

のようなものを使用します モノ・セシル 単純な実行カウンターを相互運用アセンブリに織り込みます。たとえば、次のセクションを確認してください。 よくある質問:「デバッグできないアセンブリにトレース機能を追加したいのですが、Cecil を使用することは可能ですか?」

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top