[過去ログ] カプセル化■プライベートメソッドをテストする方法 (476レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(6): 2020/07/05(日)20:47 ID:M+BkbwUs(1/15) AAS
■短い回答
プライベートをテストしたい場合は設計に問題があるので、パブリックに変更してテストしましょう
■これに対する(変な人の)驚いた反論
プライベートを一時的にパブリックにして、テストが終わったら
プライベートに戻すなんてやるわけないだろw
↑誰もそんなコトしろなんて言ってない
■テスト専門家による回答
t-wadaのブログ
外部リンク:t-wada.hatenablog.jp
省13
2: 2020/07/05(日)20:48 ID:M+BkbwUs(2/15) AAS
前スレ
カプセル化の有害性、オブジェクト指向は愚かな考え
2chスレ:tech
3(8): 2020/07/05(日)20:51 ID:M+BkbwUs(3/15) AAS
クソコード例。こんなコード書いてるやつが、privateのテストで
パブリックに変更してテストするのはおかしいとか言ってる(笑)
lenが配列(笑)理由 int型にはnullが入れられないから(笑)
2chスレ:tech
ずれるかもしれないが下のような場合、privateにnullを突っ込んだらヌルポだが
privateをわざわざコード弄ってまで別にテストするようなことは少なくとも
ビジネスソフトでは知ってる限り無い。組み込みとかは知らんし必要ならやれば良いけど。
class ChinTester {
public void testChin(int[] len) {
if (len==null){System.out.println("You are a woman");
省14
4(1): 2020/07/05(日)20:53 ID:M+BkbwUs(4/15) AAS
983 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 14:18:27.81 ID:9F15TCk0 [68/74]
正直あの短さでOOかどうかと(スタティックでインスタンス化もないコードだが)言うのは
不毛だけどID:JiRnWiGCの組み込みおじさんのがOO感はあるよ。
で、staticで出されてもprivateのテストがどうかと言う話には全く寄与しないわけだが、
じゃあ逆に、>>805のチンコテストのfuncSとfuncBはどうやってテストするの?
パブリック経由で全パターンと言うことならこれでこの話はおしまい。
パブリック経由でやりましょう。
違うと言うなら具体的にコードでおながいします。
5(9): 2020/07/05(日)20:54 ID:M+BkbwUs(5/15) AAS
>>4への回答
設計に問題があるので、コードを修正しましょう。
修正すれば自然とpublicになります↓
926 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 12:20:23.64 ID:MQ9nuMmc [21/53]
>>805
こう書いた方が良いと思うの
外部リンク:paiza.io
6(1): 2020/07/05(日)20:57 ID:M+BkbwUs(6/15) AAS
>>5の補足、これはまだプライベートですが
普通はMainクラスにコードをごちゃごちゃ書かないので
judgeLengthを含むクラスを作成します。
そしてmainから呼び出します。
必然的にjudgeLengthメソッドはパブリックになります。
9(1): 2020/07/05(日)21:07 ID:M+BkbwUs(7/15) AAS
>>7
微妙でもなんでもねーよ
Mainクラスに関係ない処理を入れるな
これは小さいサンプルだが、大きくなった時
Mainクラスに、そんな処理はいってたらおかしいだろ
なんで(大きくなったコードの)その他の部分は別のクラスにあるのに
この処理だけMainクラスにあるんだ?って
11(1): 2020/07/05(日)21:11 ID:M+BkbwUs(8/15) AAS
>>10
Mainクラスと関係ある処理だから?
じゃあ名前が悪いよね。
誰が「Mainクラス」と聞いて
その中にある処理を想像できるんだ?w
15(1): 2020/07/05(日)21:14 ID:M+BkbwUs(9/15) AAS
>>12
だから分けろって。設計がおかしいだろ。
Mainクラスにメインの処理を入れるな
設計が悪いって言ってるのになんで理解できない?
16(1): 2020/07/05(日)21:15 ID:M+BkbwUs(10/15) AAS
プライベートをテストしたいっていうのは
本質的に設計が悪いってことが理解できないやつ
もしくは設計なんてしたことがないやつなんだろう
18(1): 2020/07/05(日)21:16 ID:M+BkbwUs(11/15) AAS
>>17
だからやるのが正解だろw
24(1): 2020/07/05(日)21:22 ID:M+BkbwUs(12/15) AAS
Mainに他のクラスの処理を全て同居させる
全部Mainにあるから呼び出せるよね?と
publicメソッドをprivateメソッドに変更
publicメソッドはMainのみ!
と言い
あぁ、プライベートメソッドのテストができない〜と嘆く(笑)
アホなのか?自分でテストできないようにクソ設計に変更して
自業自得じゃんw
27(2): 2020/07/05(日)21:25 ID:M+BkbwUs(13/15) AAS
おそらく設計とは何かを知らずに、
ただ動けばいいと思ってるんだろう
テストしやすく設計するのも
設計の一つ
29(1): 2020/07/05(日)21:26 ID:M+BkbwUs(14/15) AAS
>>26
だからテストしやすようにjudgeLengthメソッドを含んだ
クラスを作るだけ
30(1): 2020/07/05(日)21:27 ID:M+BkbwUs(15/15) AAS
>>28
勘違いしてませんが?
Main関数とロジックを同居させるなの意味がわかりませんか?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s