
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
自分も色々と悩みましたが、結論は「private 関数はテスト対象にしないほうが良い」ということに落ち着きました。
private 関数は public なインターフェースの実装上の都合によって存在するものなので、仕様が安定せず、テストコードが書けないからです。
もし仕様を安定化できるならば、private 関数にせず別のクラスの public 関数として分離したほうが良いです。
回答ありがとうございます
なるほど
privateな関数はテストしないという方針もありますね
現在、ハッシュ計算のようなそのクラスの中だけで使用する関数がprivateであり
これのアルゴリズムが正しいかテストしたいのです
値の計算にはクラスのメンバも使用するため
そのクラス外部に切り出すことができません
この場合どのようにテストすればよろしいでしょうか
# 市場にはprivateなメンバをテストできる有償のツールもあるようですが
# 数十万円~するので用意することが難しいです
No.2
- 回答日時:
そのクラス自体を実装しているときなど、クラス外のテストプログラムからprivateメンバを書き出したいときなどあると思います。
自分は、コーディング段階では「public」のところを「private」に変えておいて、完成してから「private」に戻してますが、いかがでしょうか?
回答ありがとうございます
publicのところをprivateに変えると
本来、クラス外部から呼ぶところも外部から呼べなくなってしまいますが
テストは実装クラス本体に記述する、ということでしょうか
置き換える件については
privateやprotectedを直接使用せず、
MY_PRIVATEやMY_PROTECTEDのようなマクロを作成しておき
テストの時はpublic、リリース時はそれぞれ本来のアクセス修飾子に置換されるようにしたこともありますが
この方法はテストのためのコードを埋め込むことになるので他の方法も探しています
(どうしても方法が見つからなければ、friendクラスや上記マクロを使用する予定です)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
イベントにAddHandlerされてい...
-
privateなメンバ関数をテストす...
-
FriendとPublicの違い。。。
-
プロトタイプなのにexternを使...
-
デスクトップへコピー時に処理...
-
【MFC】ユーザインタフェースス...
-
C++で継承元のクラスの代入演算...
-
DataGridViewのセルに斜線を引...
-
MFCのドラッグ&ドロップについて
-
デストラクタ
-
関数重複の問題
-
VBのシステムの設計書にUMLは適...
-
(UWSC) 「#32770」の意味わかり...
-
DLLからEXEのクラスを呼び出す...
-
ダイアログ表示時にチェックボ...
-
個々の関数について継承してい...
-
条件によって別のクラスのイン...
-
UMLでの「オブジェクト」と「イ...
-
C# using の有効範囲
-
VB.NETで、DLLを頂いたんですが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
エディットコントロールでEnter...
-
オーバーライド関数の呼び出し...
-
このコンパイルエラーの意味に...
-
【ASP.NET】 独自で作成したク...
-
MFC モードレスDlgについて
-
[MFC] CWnd::MessageBoxの警告...
-
ボタンのオーナードローについて
-
MessageBoxを継承したい
-
ダイアログクラスのコントロー...
-
vba sendKeysを送る相手のソフ...
-
エディットコントロールのイベ...
-
Delphi6 DLL内でのメモリ共有(?)
-
個々の関数について継承してい...
-
privateなメンバ関数をテストす...
-
WindowsAPIのリストビューの...
おすすめ情報