@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

C++アンマネージコードの単体テストについて

投稿者投稿内容
ハリー
会議室デビュー日: 2007/10/06
投稿数: 3
投稿日時: 2007-10-06 21:56
初めての投稿になります。
よろしくお願いいたします。


今回初めてC++の製造をすることになりまして、単体テストの方法について
ご意見を伺いたいと思い投稿いたしました。


当初の方針ではVoクラスを除く全クラス、全メソッドをテストする。という方針だったのですが、
VisualStudioのテストプロジェクトを使用してテストを始めたところ、
privateメソッドをテストする方法が分からず、いきなりつまづいた状態です。

理論的には全publicメソッドをテストすれば、全メソッドがカバーされるといのは分かっているのですが、
個人的には最小単位でテストをしたいという感覚がありまして。。。

ソースを書き換える以外にアンマネージコードのprivateメソッドをテストする方法は無いでしょうか?
(VisualStudioのテストプロジェクトを使用する、しないというのにこだわりは無いです。)


環境は
VisualStudio2005 TeamEdtion For Software Developers(win32プロジェクト)
Windows XP Professonal SP2
です。

よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-08 07:59
リフレクション
で調べてください
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-10-08 09:46
本当に方法はないのでしょうかね... 運用からすると直接必要ないのはわかるのですが、開発からすると必要な場面だって想定されますよね。 テスト ツールだったらそれくらい (リフレクション) できていそうなので少々信じられない気持ちです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-10-08 10:41
引用:

テスト ツールだったらそれくらい (リフレクション) できていそうなので少々信じられない気持ちです。



でも、pure C/C++ の言語仕様にリフレクションがないわけで。。。
ハリー
会議室デビュー日: 2007/10/06
投稿数: 3
投稿日時: 2007-10-08 11:24
Jitta様、じゃんぬねっと様、渋木宏明(ひどり)様
ご返信ありがとうございます。


テストプロジェクト自体はマネージなので、Jitta様の仰るとおりリフレクションが使えるかも、と試してみましたが、やはり被テスト対象がアンマネージだとリフレクションは使えない(調べ方が悪いだけかもしれませんが・・・)ようですね。


本当に最後の手段としては
#ifdef _DEBUG
#define private public
#define protected public
#endif
を書いてしまうしかないかな・・・と思っているのですが、出来ればやりたくないですねぇ・・・
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-10-08 12:32
リフレクションが使えるくらいなら、最初から prvate メンバに対するテストも行えるはずです。

VS のテストフレームワークの実装がどうなっているか調べたことはありませんが、まず間違いなくリフレクションを使っているはずです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-10-08 15:16
引用:

渋木宏明(ひどり)さんの書き込み (2007-10-08 10:41) より:

でも、pure C/C++ の言語仕様にリフレクションがないわけで。。。


ああ、CLI じゃないのですね。 って、アンマネージと書いてありましたね...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 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まで

スキルアップ/キャリアアップ(JOB@IT)