トップ回答者
単体テストでのカバレッジ測定について

質問
-
C#についての質問です。
Visual Studioを使って単体テストのカバレッジ測定をやっていたのですが、
カバレッジの測定ができなくなってしまいました。--カバレッジ測定ができるケース--
・ ソリューション(2つのDLLと1つの単体テストプロジェクト)
⇒ A.DLL (a.snkで署名)
⇒ B.DLL (a.snkで署名)
この場合、カバレッジ測定の際、A.DLL/B.DLLともにa.snkで再署名すれば、カバレッジが測定できます。でも、
--カバレッジ測定できないケース--
・ ソリューション(2つのDLLと1つの単体テストプロジェクト)
⇒ A.DLL (a.snkで署名)
⇒ B.DLL (b.snkで署名)
この場合、A.DLL/B.DLLを同時にカバレッジ測定しようとすると、どの署名ファイルで再署名したらよいかが分からなくなってしまいます。こういう時は、どうしたらよいか教えてください。
回答
-
えっと、そもそもなぜ snk を分けるんでしょうか。
snk の PublicKey はそのアセンブリの出自を示すアイデンティティですので、複数のsnkが存在するという事は開発元が複数存在するという事になってしまいます。
単体テストとしては開発元単位で完結すればよろしで単一 snk しかサポートしていませんし、それが正しいと思います。
やるとしたら a.snk で署名されるアセンブリ単位でカバレッジを取得と b.snk で署名されるアセンブリ単位でカバレッジを取得するのを段階を分けることと、snk が異なるアセンブリの参照をプロジェクト参照でなく、ビルド結果のバイナリ参照にするという事でしょうか。
a.dll (a.snk) なプロジェクトが開発元が異なる b.dll (b.snk ) を参照するという事は普通にできますし my.dll (my.snk) -> mscorlib.dll (microsoft bcl.snk) でいつもやっている通りの関係に如何に落としてあげるかという事になります。ただし、統合してのカバレッジは取得できません、カバレッジなどは各開発元がそれぞれの責任においてやれば良い事だからです。
#インストルメンテーションプロセスを踏まない、CLR プロファイラ API でのILレベルでのカバレッジツールは再署名等の必要がありませんので、そのようなツールを利用するのも一つの方法と言えます。
Kazuhiko Kikuchi
すべての返信
-
えっと、そもそもなぜ snk を分けるんでしょうか。
snk の PublicKey はそのアセンブリの出自を示すアイデンティティですので、複数のsnkが存在するという事は開発元が複数存在するという事になってしまいます。
単体テストとしては開発元単位で完結すればよろしで単一 snk しかサポートしていませんし、それが正しいと思います。
やるとしたら a.snk で署名されるアセンブリ単位でカバレッジを取得と b.snk で署名されるアセンブリ単位でカバレッジを取得するのを段階を分けることと、snk が異なるアセンブリの参照をプロジェクト参照でなく、ビルド結果のバイナリ参照にするという事でしょうか。
a.dll (a.snk) なプロジェクトが開発元が異なる b.dll (b.snk ) を参照するという事は普通にできますし my.dll (my.snk) -> mscorlib.dll (microsoft bcl.snk) でいつもやっている通りの関係に如何に落としてあげるかという事になります。ただし、統合してのカバレッジは取得できません、カバレッジなどは各開発元がそれぞれの責任においてやれば良い事だからです。
#インストルメンテーションプロセスを踏まない、CLR プロファイラ API でのILレベルでのカバレッジツールは再署名等の必要がありませんので、そのようなツールを利用するのも一つの方法と言えます。
Kazuhiko Kikuchi -
こんにちは、マルコメ味噌 さん。
MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
しばらく経ちましたが、その後いかかでしょうか。
参考になる情報をいただいているかと思われましたので、勝手ながら私のほうで回答としてマークさせていただきました。
kazuk さん、情報ありがとうございます。
いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたしますね。
今後とも、MSDN フォーラムをよろしくお願いいたします。
日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海