No.1ベストアンサー
- 回答日時:
なんでprivateなメソッドをテストしなくちゃいけないのか
という問題があるけど
テストはリフレクション必須ね
JUnit-addonsを使えば
PrivateAcceccorクラスがあるので
これを使えばコードがすこしすっきりするわ
この回答への補足
回答ありがとうございます。
プライベートメソッドをテストしたかったのはriverotterさんの指摘にもある通り、クラスの共通内部処理の動作確認をしたかったからです。
できるだけ、publicメソッドのテストだけで済むように、リファクタリングを検討するとともに、どうしても必要な場合は、PrivateAccessorを試してみようと思います。
No.2
- 回答日時:
そもそも、なぜプライベートメソッドを用意してるのでしょうか?
クラスの拡張などを考慮するとprotectedにした方が良いメソッドも結構あると思います。
本末転倒ですが、もしprotectedにできるなら、protectedメソッドに変更するのも一つの手です。。
プライベートメソッドって、クラス内の共通処理として書いていることが多いと思います。言い方を変えれば、全てのプライベートメソッドは他のメソッドの一部として記述されます。
なので(あくまで私の今までの経験からですが)、publicメソッドのテストケースは関連するprivateメソッドをすべて通るように用意します。
もしそうする事で、一つのメソッド(もしくはクラス)のテストケースが膨大な数になるようでしたら、メソッドやクラスが複数の責務を無理やり一つにまとめているような場合もありますので、一度リファクタリングを検討してみた方が良いと思います。
こういったクラスは、製造時に一生懸命頑張って作ってテストしても保守フェーズで問題になることが多いので、可能であれば製造、単体テスト時点で見直すのがベストです。
回答ありがとうございます。
プライベートメソッドをテストしたかったのはご指摘の通り、クラス内の共通処理の動作確認をしたかったからです。
本来は設計の段階で細かく切り分けた方がよいのでしょうが、
設計の経験値が足りず、ひとつのクラスで動くものを作ってからリファクタリングで切り分ければようとしていました。
そのため、プライベートメソッドが増えてしまい、publicメソッドのテストだけでは、原因がわかりにくくなっていたので、プライベートメソッドのテストケースを書くようになっていました。
回答のおかげで、そもそもプライベートメソッドをテストしなければならない状況がよろしくないことがわかりました。
リファクタリングで、機能の切り分けを検討したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Visual Basic(VBA) vbaエクセルマクロについて RemoveDuplicatesを使わずに、重複行を削除すらマクロを作 3 2023/03/02 22:03
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- 中学校 間違った国語の実力テストの勉強? 1 2022/08/28 15:59
- 大学・短大 大学一年です。 英語の講義の最終回当日朝に、先生からのメールで「教務課から連絡がありました。成績の評 3 2023/02/01 20:38
- うつ病 信頼出来る精神科、心療内科を教えてください。 今日鬱状態とか色々メンタルがしんどすぎたので、病院に行 4 2023/07/05 17:07
- 高校 新高一です。 自分は新高一で自分の地域では上の方にある学校に進学したのですが、毎週2回小テストっぽい 5 2023/05/14 22:47
- 高校受験 新中3です。今年の秋頃に学力診断テストというテストがあり、そのテストの点数で行ける高校が限られてしま 2 2022/04/02 21:56
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/02 11:48
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/04 12:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaに"search"という関数 or ...
-
レコード件数の表示
-
java ジェネリックスに関して
-
メソッド宣言の戻り値の型にク...
-
String.containsの反対機能はあ...
-
StringBufferからStringへキャ...
-
Java初級 引数に適用できません
-
コマンドライン引数のチェック
-
Java初心者です、エラーの意味...
-
メインメソッドのstatic
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
オブジェクトレベルとメタレベル
-
変数名の付け方
-
エクセルVBA 画像を貼り付ける...
-
配列の重複する値とその個数を...
-
インスタンス参照でアクセスで...
-
VB.NET getとsetの概念がわかり...
-
成人式の後中3のクラスで集まろ...
-
C# インスタンスの破棄
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
レコード件数の表示
-
StringBufferからStringへキャ...
-
C# 点の描き方をおしえてくだ...
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
なぜprotected overrideなのか
-
別クラスのmainメソッドの実行
-
メソッド宣言の戻り値の型にク...
-
メソッドの引数に指定されてい...
-
C言語での文字列より値を抜き出す
-
Strutsでチェックボックスの値...
-
YYYYMMDD書式の日付に対する適...
-
クラスを作るとメソッドの数が...
-
java ジェネリックスに関して
-
C# でメソッドに送られてきたOb...
-
C# 他のnamespaceにあるメソッ...
-
リストボックスの並べ替え (VB...
-
public static void main (Stri...
おすすめ情報