- - PR -
C++アンマネージコードの単体テストについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-10-06 21:56
初めての投稿になります。
よろしくお願いいたします。 今回初めてC++の製造をすることになりまして、単体テストの方法について ご意見を伺いたいと思い投稿いたしました。 当初の方針ではVoクラスを除く全クラス、全メソッドをテストする。という方針だったのですが、 VisualStudioのテストプロジェクトを使用してテストを始めたところ、 privateメソッドをテストする方法が分からず、いきなりつまづいた状態です。 理論的には全publicメソッドをテストすれば、全メソッドがカバーされるといのは分かっているのですが、 個人的には最小単位でテストをしたいという感覚がありまして。。。 ソースを書き換える以外にアンマネージコードのprivateメソッドをテストする方法は無いでしょうか? (VisualStudioのテストプロジェクトを使用する、しないというのにこだわりは無いです。) 環境は VisualStudio2005 TeamEdtion For Software Developers(win32プロジェクト) Windows XP Professonal SP2 です。 よろしくお願いいたします。 | ||||
|
投稿日時: 2007-10-08 07:59
リフレクション
で調べてください | ||||
|
投稿日時: 2007-10-08 09:46
本当に方法はないのでしょうかね... 運用からすると直接必要ないのはわかるのですが、開発からすると必要な場面だって想定されますよね。 テスト ツールだったらそれくらい (リフレクション) できていそうなので少々信じられない気持ちです。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-10-08 10:41
でも、pure C/C++ の言語仕様にリフレクションがないわけで。。。 | ||||
|
投稿日時: 2007-10-08 11:24
Jitta様、じゃんぬねっと様、渋木宏明(ひどり)様
ご返信ありがとうございます。 テストプロジェクト自体はマネージなので、Jitta様の仰るとおりリフレクションが使えるかも、と試してみましたが、やはり被テスト対象がアンマネージだとリフレクションは使えない(調べ方が悪いだけかもしれませんが・・・)ようですね。 本当に最後の手段としては #ifdef _DEBUG #define private public #define protected public #endif を書いてしまうしかないかな・・・と思っているのですが、出来ればやりたくないですねぇ・・・ | ||||
|
投稿日時: 2007-10-08 12:32
リフレクションが使えるくらいなら、最初から prvate メンバに対するテストも行えるはずです。
VS のテストフレームワークの実装がどうなっているか調べたことはありませんが、まず間違いなくリフレクションを使っているはずです。 | ||||
|
投稿日時: 2007-10-08 15:16
ああ、CLI じゃないのですね。 って、アンマネージと書いてありましたね... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-10-09 14:30
C++(Unmanaged)なテストの記事としては、最近のだと
http://www.atmarkit.co.jp/fdotnet/cpptest/index/index.html がありますね。 CppUnit については、モノ自体は古いのであさればいろんな記事があるはずです。 #最近のやつみたいに緑とか赤とかは出ませんが... で、private のテストですが、ソースを書き換えずにというのは多分ないと思います。 private なメソッドも、最終的には、どこか public なところから呼ばれるはずなので それを通して、そこを通るようにテストするというくらいしかないんじゃないかな? あとは、テスト用にクラス内に専用メソッド( #ifdef DEBUG などとは別に #ifdef TEST_CODE などでくくっておくw)を用意するくらいしか実質的な方法はないと思いますけど? #VSのテストフレームワークって、Native C++ のテストは「直接的には」できなかったような気がするけど? _________________ // とっちゃん(高萩 俊行)@わんくま同盟 // とっちゃん’Blog // MS-MVP for Developer Tools - Visual C++ // WindowsInstallerの話題はhttp://www.freeml.com/msiまで |