[過去ログ] カプセル化■プライベートメソッドをテストする方法 (476レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
246: 2020/07/11(土)09:55 ID:fJlL8BSP(1/41) AAS
>>242
まずテストの考え方が違うんだよ。

全ての組み合わせをテストする完全な網羅テストは時間的に不可能
その他のテストも数によっては現実的に不可能となることが多い
通常カバレッジ100%というのは命令網羅テストにすぎない
だが命令網羅テストをやってれば完璧かと言うかそうではない

じゃあどれをやればいいんだよ!?と思うかもしれないが、どれをやるかじゃない
何をやれば自分が作ったものが正しく動くと自信が持てるかなんだよ
現実的に実現可能であるというルールを加えれば、完璧なテストなんてできやしない。

内部実装を直接呼び出して合格したとしても、
省6
250: 2020/07/11(土)10:36 ID:fJlL8BSP(2/41) AAS
>>248
逆転の発想じゃなくて普通の発想じゃね?
privateなんだから
254
(1): 2020/07/11(土)11:18 ID:fJlL8BSP(3/41) AAS
>>252
アクセス修飾子は仕様が明確になってることを表すなんて言ってないよ
仕様が明確になってるならpublicでいいと言ってるだけ
255
(1): 2020/07/11(土)11:19 ID:fJlL8BSP(4/41) AAS
>>253
> publicにしたら全然関係ないパッケージからもアクセスされてしまうからね

全然関係ないパッケージ = テストコード
アクセスできてなにか問題あるの?
260
(1): 2020/07/11(土)11:25 ID:fJlL8BSP(5/41) AAS
>>256
言ってないよ?

外部からアクセスしないならprivate。
でも仕様がはっきりしてるならpublicにしていい。

facebookでもプライベートな話は他人に見せる必要がないからprivateだけど
別に他人に見せてもいいならpublicにしてもいいよね
それと一緒
262
(1): 2020/07/11(土)11:26 ID:fJlL8BSP(6/41) AAS
>>257
> テストは同じパッケージにするのが基本だろ

Java以外で、同じパッケージとはなんのことで
そうするとどうなるんですか?
264
(1): 2020/07/11(土)11:27 ID:fJlL8BSP(7/41) AAS
>>261
privateをテストできる言語っていうのは
単に全てpublicになっているのと一緒

アンダースコアで、これはアクセスできるけど
privateという意味ですよと言ってるのと何も変わらないよ
267
(1): 2020/07/11(土)11:29 ID:fJlL8BSP(8/41) AAS
>>263
仕様がはっきりしてるからpublicにするんじゃなくて
仕様をはっきりさせれば、publicにしてもよいと言ってるだけ
理由がなければprivateのままでもいい。どちらでもいい。
テストしたい=理由。理由があるならpublicにしていい。

> なぜならば密結合になってしまうから
テストコードから仕様がはっきりしないprivateをテストすること=密結合
密結合を避けるためにも、公開されたインターフェースにするのが正しい
269
(1): 2020/07/11(土)11:30 ID:fJlL8BSP(9/41) AAS
>>265
Java以外を知らないんですか

>>266
Java以外を知らいんですかw
270
(1): 2020/07/11(土)11:30 ID:fJlL8BSP(10/41) AAS
>>268
ああ、人から聞いただけなのねw
273: 2020/07/11(土)11:32 ID:fJlL8BSP(11/41) AAS
privateにあくせすできる言語でも
テストするならどちらにしろ仕様をはっきりさせないといけない

そうしないとテストコードがあったからといって
これが正しく仕様を満たしているのか?なんてわからない
275
(1): 2020/07/11(土)11:36 ID:fJlL8BSP(12/41) AAS
>>3のコードを書いたのは別の人。

そもそも>>3のコードをクソコードと言って
このスレにコピペしたのが俺
284
(1): 2020/07/11(土)12:09 ID:fJlL8BSP(13/41) AAS
>>281
クラス図にprivateメソッドを書きますか?
286
(3): 2020/07/11(土)12:12 ID:fJlL8BSP(14/41) AAS
>>285
もしかしてお前カバレッジの意味がわかってないんじゃね?

publicメソッドの中からprivateメソッドが呼び出された時
privateメソッドの行は実行された=カバレッジとして計測される

ってことは知ってますよね?
287: 2020/07/11(土)12:15 ID:fJlL8BSP(15/41) AAS
世の中にある全てのカバレッジ計測ツールは
privateメソッド内の実行した行を測定できるのですが
>>285を見る限り何もわかってない気がしますねw
289
(1): 2020/07/11(土)12:16 ID:fJlL8BSP(16/41) AAS
>>288
だから>>285みたいな的はずれなことを言ってるんだねw
291
(1): 2020/07/11(土)12:18 ID:fJlL8BSP(17/41) AAS
>>290
でもおまえ単体テストしたこと無いし
カバレッジの計測もしたことがないから
何も理解してないじゃん(笑)
問題はそこだよね。
296
(1): 2020/07/11(土)12:27 ID:fJlL8BSP(18/41) AAS
>>293
しません
297
(1): 2020/07/11(土)12:27 ID:fJlL8BSP(19/41) AAS
>>292
最終的な設計ドキュメントはコードから生成するものだからね
クラス図にprivateメソッドが書かれていて嬉しいのでしょうかどうなのでしょうか?
298: 2020/07/11(土)12:28 ID:fJlL8BSP(20/41) AAS
> 最終的な設計ドキュメントはコードから生成するものだからね
クラス図の話ね。クラス図は(唯一?)コードから生成できる。
300: 2020/07/11(土)12:31 ID:fJlL8BSP(21/41) AAS
正直、詳細なクラス図は、設計図の中で一番不要だと思ってる。
必要なのはソースコードと完全に一致してるクラス図ではなく
クラス概要図・関連図とでも言うべきだろう

主要なメソッドとそれぞれのクラス関係がわかればいい
目的はなにかを考えればその結論にたどり着くはず
303: 2020/07/11(土)12:45 ID:fJlL8BSP(22/41) AAS
>>301
保守する時はコードから生成できるので完璧なのはいらない
だから本当に必要なのはクラス概要図だろう

図としてみたい場合、メソッドすべてがずらずら書かれていても邪魔なだけ
ましてやprivateなんていらない。
図としてみたい場合、本当に見たいのは関連だろう?
304
(1): 2020/07/11(土)12:46 ID:fJlL8BSP(23/41) AAS
>>302
> 単体テストという言葉の曖昧さが

それ以前に、おまえ単体テストしたこと無いし
カバレッジの計測もしたことがないから
何も理解してないじゃん(笑)
問題はそこだよね。
308
(1): 2020/07/11(土)12:50 ID:fJlL8BSP(24/41) AAS
288 返信:デフォルトの名無しさん[] 投稿日:2020/07/11(土) 12:15:29.92 ID:JFnadz6+ [26/35]
>>286
僕は単体テストやったこと無い
カバレッジの計測もしたことないからわからない
僕は知りません
315: 2020/07/11(土)15:55 ID:fJlL8BSP(25/41) AAS
AA省
316: 2020/07/11(土)15:56 ID:fJlL8BSP(26/41) AAS
外部リンク:maku.blog

第10章 このメソッドをテストハーネスで動かすことができません

テストしたいメソッドが private である
・private メソッドをテストしたい場合、そのメソッドは public にすべきである。
・public メソッドにすべきかどうかで悩んでしまう場合、大抵は、そのクラスが多くのことを行いすぎであり、
修正すべきことを意味している(1つのクラスが複数の責務を持ってしまっている)。
・よい設計はテスト可能であり、テスト可能でない設計は悪い設計である。

・この方法は、メソッドを単純に public 化するのと本質的には変わらないので微妙な対応方法だが、リファクタリングすべき箇所の目印となる。
・Java などの言語ではリフレクションによって private メソッドのテストを記述することはできるが、
根本的な依存関係の問題を先延ばしにしているだけである。その種のごまかしをすると、
省1
318: 2020/07/11(土)18:36 ID:fJlL8BSP(27/41) AAS
>>317

他のスレで書いたけど「例え」は物事をわかりやすく説明するために使うもの
何かを批判するために「例え」を使うのは悪手。なぜなら
「例え」で批判してるのは「例え」に使ったものだから

お前が批判してるのは北朝鮮であって
和田さんや「レガシーコード改善ガイド」の
ベストプラクティスの批判にはなっていない
323
(1): 2020/07/11(土)19:30 ID:fJlL8BSP(28/41) AAS
実践した結果コードがきれいになり
テストがしやすくなったよ
328: 2020/07/11(土)21:57 ID:fJlL8BSP(29/41) AAS
まるで○○は危険でしょうと言うだけで
何が危険かわかってない人のような言い方だなw
329
(1): 2020/07/11(土)21:59 ID:fJlL8BSP(30/41) AAS
>>325
> まだぼんやりとして言語化できる段階にない

当たり前


288 返信:デフォルトの名無しさん[] 投稿日:2020/07/11(土) 12:15:29.92 ID:JFnadz6+ [26/44]
>>286
僕は単体テストやったこと無い
カバレッジの計測もしたことないからわからない
僕は知りません
330: 2020/07/11(土)22:03 ID:fJlL8BSP(31/41) AAS
>>327
ではTDDの場合どうなのか?

Private Methods, Test Driven Development, and Good Design
外部リンク:www.infoq.com

> Why to test private method? Most of TDDers would answer instantly: don’t do it.
プライベートのテストをする理由?
ほとんどのTDDersはこう答える。「するな」

和田メソッド(笑)が言っていることとTDDは完全に一致してるな
まあ実際にはTDDが最初にあって和田さんは
それに同意して、TDDの話をしてるんだから当然なんだが
331: 2020/07/11(土)22:04 ID:fJlL8BSP(32/41) AAS
How to unit test private methods in BDD / TDD?
外部リンク:stackoverflow.com
332: 2020/07/11(土)22:05 ID:fJlL8BSP(33/41) AAS
Don’t Test Private Methods
外部リンク:dzone.com
336
(1): 2020/07/11(土)22:33 ID:fJlL8BSP(34/41) AAS
>>334
でもお前の発言はなにもないじゃんw
壊れたレコードのように和田はだめ(理由なし)和田はだめ(理由なし)を
繰り返してるだけ。今度はTDDはだめっていうんですかね?w
339: 2020/07/11(土)22:40 ID:fJlL8BSP(35/41) AAS
>>337
まるで和田メソッド(TDDの常識的な手法)に
限界があるような言い方してるじゃんw

自分が何も知らないのに、限界があるんじゃないかという
疑いをかけるのはだめ。
342
(1): 2020/07/11(土)22:44 ID:fJlL8BSP(36/41) AAS
>>340
一般論だからこそ、TDDの批判にはならないんだよ。
343: 2020/07/11(土)22:45 ID:fJlL8BSP(37/41) AAS
つまり

「お前の意見に言いたいことがある。一般論として人はだれでも間違える(ドヤァ)」

といっても意見にたいして、何かを言ってることにはならないのと同じね。
346: 2020/07/11(土)22:46 ID:fJlL8BSP(38/41) AAS
>>344
じゃあ京都大学ではその言葉は多数派だから真実にはならないね(笑)
347
(1): 2020/07/11(土)22:46 ID:fJlL8BSP(39/41) AAS
>>345
だから「TDDには」疑いをかけられてないと言ってる。
お前は一般論を言っただけ
349: 2020/07/11(土)22:51 ID:fJlL8BSP(40/41) AAS
>>348
皮肉かどうかはどうでもいいな
少なくともお前はバカだということ
議論してるふりをしてるだけ
351: 2020/07/11(土)22:53 ID:fJlL8BSP(41/41) AAS
>>350
日本語が理解できてないねw
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s