■短い回答
プライベートをテストしたい場合は設計に問題があるので、パブリックに変更してテストしましょう
■これに対する(変な人の)驚いた反論
プライベートを一時的にパブリックにして、テストが終わったら
プライベートに戻すなんてやるわけないだろw
↑誰もそんなコトしろなんて言ってない
■テスト専門家による回答
t-wadaのブログ
https://t-wada.hatenablog.jp/entry/should-we-test-private-methods
短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。
プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
プライベートなメソッドのテストに関しては、4つの考え方があります。
・パブリックメソッド経由でテストする
・別クラスのパブリックメソッドとする
・テスト対象の可視性を(やや)上げる
・プライベートのまま、リフレクションでアクセスしてテストを書く
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。
別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを示唆している場合があります。
テストがどうしても書きたい場合は、その責務はテスト対象のプライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。
探検
カプセル化■プライベートメソッドをテストする方法
■ このスレッドは過去ログ倉庫に格納されています
2020/07/05(日) 20:47:46.60ID:M+BkbwUs
2020/07/05(日) 20:48:27.27ID:M+BkbwUs
2020/07/05(日) 20:51:53.15ID:M+BkbwUs
クソコード例。こんなコード書いてるやつが、privateのテストで
パブリックに変更してテストするのはおかしいとか言ってる(笑)
lenが配列(笑)理由 int型にはnullが入れられないから(笑)
https://mevius.5ch.net/test/read.cgi/tech/1592491656/805
ずれるかもしれないが下のような場合、privateにnullを突っ込んだらヌルポだが
privateをわざわざコード弄ってまで別にテストするようなことは少なくとも
ビジネスソフトでは知ってる限り無い。組み込みとかは知らんし必要ならやれば良いけど。
class ChinTester {
public void testChin(int[] len) {
if (len==null){System.out.println("You are a woman");
return;}
if (len.length<11){ uncS(len);}
else{funcB(len);}
return;}
private void funcS(int[] len){
if (len.length<9){System.out.println("Smallest");
}else{System.out.println("Smaller");}
return;}
private void funcB(int[] len){
if (len.length<14){System.out.println("Medium");}
else if (len.length<16){System.out.println("Bigger");
}else{ System.out.println("Wow!");}
return;}
}
パブリックに変更してテストするのはおかしいとか言ってる(笑)
lenが配列(笑)理由 int型にはnullが入れられないから(笑)
https://mevius.5ch.net/test/read.cgi/tech/1592491656/805
ずれるかもしれないが下のような場合、privateにnullを突っ込んだらヌルポだが
privateをわざわざコード弄ってまで別にテストするようなことは少なくとも
ビジネスソフトでは知ってる限り無い。組み込みとかは知らんし必要ならやれば良いけど。
class ChinTester {
public void testChin(int[] len) {
if (len==null){System.out.println("You are a woman");
return;}
if (len.length<11){ uncS(len);}
else{funcB(len);}
return;}
private void funcS(int[] len){
if (len.length<9){System.out.println("Smallest");
}else{System.out.println("Smaller");}
return;}
private void funcB(int[] len){
if (len.length<14){System.out.println("Medium");}
else if (len.length<16){System.out.println("Bigger");
}else{ System.out.println("Wow!");}
return;}
}
2020/07/05(日) 20:53:33.00ID:M+BkbwUs
983 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 14:18:27.81 ID:9F15TCk0 [68/74]
正直あの短さでOOかどうかと(スタティックでインスタンス化もないコードだが)言うのは
不毛だけどID:JiRnWiGCの組み込みおじさんのがOO感はあるよ。
で、staticで出されてもprivateのテストがどうかと言う話には全く寄与しないわけだが、
じゃあ逆に、>>805のチンコテストのfuncSとfuncBはどうやってテストするの?
パブリック経由で全パターンと言うことならこれでこの話はおしまい。
パブリック経由でやりましょう。
違うと言うなら具体的にコードでおながいします。
正直あの短さでOOかどうかと(スタティックでインスタンス化もないコードだが)言うのは
不毛だけどID:JiRnWiGCの組み込みおじさんのがOO感はあるよ。
で、staticで出されてもprivateのテストがどうかと言う話には全く寄与しないわけだが、
じゃあ逆に、>>805のチンコテストのfuncSとfuncBはどうやってテストするの?
パブリック経由で全パターンと言うことならこれでこの話はおしまい。
パブリック経由でやりましょう。
違うと言うなら具体的にコードでおながいします。
2020/07/05(日) 20:54:53.36ID:M+BkbwUs
>>4への回答
設計に問題があるので、コードを修正しましょう。
修正すれば自然とpublicになります↓
926 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 12:20:23.64 ID:MQ9nuMmc [21/53]
>>805
こう書いた方が良いと思うの
https://paiza.io/projects/mPhqBnYZnQukkW6HY9LmOQ
設計に問題があるので、コードを修正しましょう。
修正すれば自然とpublicになります↓
926 名前:デフォルトの名無しさん[] 投稿日:2020/07/05(日) 12:20:23.64 ID:MQ9nuMmc [21/53]
>>805
こう書いた方が良いと思うの
https://paiza.io/projects/mPhqBnYZnQukkW6HY9LmOQ
2020/07/05(日) 20:57:49.33ID:M+BkbwUs
>>5の補足、これはまだプライベートですが
普通はMainクラスにコードをごちゃごちゃ書かないので
judgeLengthを含むクラスを作成します。
そしてmainから呼び出します。
必然的にjudgeLengthメソッドはパブリックになります。
普通はMainクラスにコードをごちゃごちゃ書かないので
judgeLengthを含むクラスを作成します。
そしてmainから呼び出します。
必然的にjudgeLengthメソッドはパブリックになります。
7デフォルトの名無しさん
2020/07/05(日) 21:03:41.24ID:MQ9nuMmc >>6
judgeLengthをpublicにしてよいかどうか、オブジェクトをわけて良いかどうかは微妙なところで
publicにした場合って他のオブジェクトからも参照可能になってしまうので
そこの依存があとあとjudgeLengthの修正をできなくする可能性があるので
privateにするっていうのは他のオブジェクトから依存させないようにして独立させる意味もあるので
テストするためにpublicにしますっていうのは僕はやっぱり反対ですね
judgeLengthをpublicにしてよいかどうか、オブジェクトをわけて良いかどうかは微妙なところで
publicにした場合って他のオブジェクトからも参照可能になってしまうので
そこの依存があとあとjudgeLengthの修正をできなくする可能性があるので
privateにするっていうのは他のオブジェクトから依存させないようにして独立させる意味もあるので
テストするためにpublicにしますっていうのは僕はやっぱり反対ですね
8デフォルトの名無しさん
2020/07/05(日) 21:04:50.23ID:MQ9nuMmc 僕が書いたように同じオブジェクトにテストコードも書いちゃえば良いと思います
2020/07/05(日) 21:07:40.54ID:M+BkbwUs
>>7
微妙でもなんでもねーよ
Mainクラスに関係ない処理を入れるな
これは小さいサンプルだが、大きくなった時
Mainクラスに、そんな処理はいってたらおかしいだろ
なんで(大きくなったコードの)その他の部分は別のクラスにあるのに
この処理だけMainクラスにあるんだ?って
微妙でもなんでもねーよ
Mainクラスに関係ない処理を入れるな
これは小さいサンプルだが、大きくなった時
Mainクラスに、そんな処理はいってたらおかしいだろ
なんで(大きくなったコードの)その他の部分は別のクラスにあるのに
この処理だけMainクラスにあるんだ?って
10デフォルトの名無しさん
2020/07/05(日) 21:09:37.34ID:MQ9nuMmc2020/07/05(日) 21:11:26.55ID:M+BkbwUs
12デフォルトの名無しさん
2020/07/05(日) 21:13:00.77ID:MQ9nuMmc >>11
えっと、前にも言ったけどpaizaはMainという名前じゃないと動かないんだよ
Mainとわけてクラスを作ることもできるけど面倒だからやらなかっただけ
普通のプログラマならpaizaの制約ぐらい知ってるだろうし説明する必要もないと思ってた
君の無知さを想像できなかった僕のミスだ
えっと、前にも言ったけどpaizaはMainという名前じゃないと動かないんだよ
Mainとわけてクラスを作ることもできるけど面倒だからやらなかっただけ
普通のプログラマならpaizaの制約ぐらい知ってるだろうし説明する必要もないと思ってた
君の無知さを想像できなかった僕のミスだ
13デフォルトの名無しさん
2020/07/05(日) 21:13:24.90ID:MQ9nuMmc 君が無知すぎてごめん
14デフォルトの名無しさん
2020/07/05(日) 21:14:24.05ID:MQ9nuMmc 誠にごめんなさい
2020/07/05(日) 21:14:43.14ID:M+BkbwUs
2020/07/05(日) 21:15:37.89ID:M+BkbwUs
プライベートをテストしたいっていうのは
本質的に設計が悪いってことが理解できないやつ
もしくは設計なんてしたことがないやつなんだろう
本質的に設計が悪いってことが理解できないやつ
もしくは設計なんてしたことがないやつなんだろう
17デフォルトの名無しさん
2020/07/05(日) 21:15:45.13ID:MQ9nuMmc >>15
てめえでやれやハゲ
てめえでやれやハゲ
2020/07/05(日) 21:16:23.44ID:M+BkbwUs
>>17
だからやるのが正解だろw
だからやるのが正解だろw
19デフォルトの名無しさん
2020/07/05(日) 21:17:00.58ID:MQ9nuMmc20デフォルトの名無しさん
2020/07/05(日) 21:17:17.30ID:MQ9nuMmc >>18
やってない君が不正解だね
やってない君が不正解だね
21デフォルトの名無しさん
2020/07/05(日) 21:19:16.27ID:MQ9nuMmc 僕は下痢便コードをこうするべきって修正したよ
paizaで動くようにMainというクラス名に変えたけどね
paizaだからそうなるよねってみんな理解してくれるものと思ってた
paizaを知らない木偶の坊がクラス名に文句つけてきたとき僕は絶望した
paizaで動くようにMainというクラス名に変えたけどね
paizaだからそうなるよねってみんな理解してくれるものと思ってた
paizaを知らない木偶の坊がクラス名に文句つけてきたとき僕は絶望した
2020/07/05(日) 21:20:28.56ID:Xwol7cCi
23デフォルトの名無しさん
2020/07/05(日) 21:21:29.14ID:MQ9nuMmc こうするべきだと思うならやれば良いがな
自分でやりもせず他人に文句いうだけの人間は木偶の坊のそしりを免れないよ
自分でやりもせず他人に文句いうだけの人間は木偶の坊のそしりを免れないよ
2020/07/05(日) 21:22:53.14ID:M+BkbwUs
Mainに他のクラスの処理を全て同居させる
全部Mainにあるから呼び出せるよね?と
publicメソッドをprivateメソッドに変更
publicメソッドはMainのみ!
と言い
あぁ、プライベートメソッドのテストができない〜と嘆く(笑)
アホなのか?自分でテストできないようにクソ設計に変更して
自業自得じゃんw
全部Mainにあるから呼び出せるよね?と
publicメソッドをprivateメソッドに変更
publicメソッドはMainのみ!
と言い
あぁ、プライベートメソッドのテストができない〜と嘆く(笑)
アホなのか?自分でテストできないようにクソ設計に変更して
自業自得じゃんw
26デフォルトの名無しさん
2020/07/05(日) 21:25:43.01ID:MQ9nuMmc >>24
君はまだMainという名前のレトリックから抜け出せてないように見える
paizaで動かすためにMainという名前にしたってだけだから
実際にはそれなりの名前になるでしょう
privateメソッドは当然クラスと関係あるものになるでしょうということ
Mainという名前に囚われ過ぎておられるように見受けられる
自分だったらこう書くのにって言うのがあるならそれを実践してみるべきかと思われます
君はまだMainという名前のレトリックから抜け出せてないように見える
paizaで動かすためにMainという名前にしたってだけだから
実際にはそれなりの名前になるでしょう
privateメソッドは当然クラスと関係あるものになるでしょうということ
Mainという名前に囚われ過ぎておられるように見受けられる
自分だったらこう書くのにって言うのがあるならそれを実践してみるべきかと思われます
2020/07/05(日) 21:25:44.19ID:M+BkbwUs
おそらく設計とは何かを知らずに、
ただ動けばいいと思ってるんだろう
テストしやすく設計するのも
設計の一つ
ただ動けばいいと思ってるんだろう
テストしやすく設計するのも
設計の一つ
28デフォルトの名無しさん
2020/07/05(日) 21:26:22.28ID:MQ9nuMmc >>27
Mainを勘違いしてたアホが何抜かしとんねん
Mainを勘違いしてたアホが何抜かしとんねん
2020/07/05(日) 21:26:36.76ID:M+BkbwUs
2020/07/05(日) 21:27:04.67ID:M+BkbwUs
31デフォルトの名無しさん
2020/07/05(日) 21:27:05.17ID:MQ9nuMmc 謙虚になれや
オブジェクト指向とは礼儀作法と心得よ
オブジェクト指向とは礼儀作法と心得よ
32デフォルトの名無しさん
2020/07/05(日) 21:27:44.35ID:MQ9nuMmc >>30
はいはいもうえーから
はいはいもうえーから
2020/07/05(日) 21:27:45.52ID:Xwol7cCi
34デフォルトの名無しさん
2020/07/05(日) 21:28:41.91ID:MQ9nuMmc >>29
作ってへんやんけ
作ってへんやんけ
35デフォルトの名無しさん
2020/07/05(日) 21:28:59.67ID:MQ9nuMmc やりもせずに何抜かしとんねん
36デフォルトの名無しさん
2020/07/05(日) 21:29:55.13ID:MQ9nuMmc ほんま口だけやな
2020/07/05(日) 22:31:17.31ID:cdjjBT1g
あら。続いていたのか。
2020/07/05(日) 22:53:15.98ID:VS9zJ3bZ
このスレの主旨的にはprivateメソッドのテストコードを書きたいんだよね?
書く必要がないって主張は違うよね?
書く必要がないって主張は違うよね?
2020/07/05(日) 23:21:59.16ID:MQ9nuMmc
それはそれでありだと思うよ
2020/07/05(日) 23:22:46.55ID:MQ9nuMmc
結局のところ何でもあり
僕は単体テストさえやってないからね
僕は単体テストさえやってないからね
2020/07/05(日) 23:27:01.94ID:cdjjBT1g
スレタイと書いてあることがチグハグで趣旨が解りづらいな。
スレタイに従えば、privateを呼び出したいみたいだが、>>1の発言を見るとprivateの呼び出しは推奨しないように見える。
まぁ、私も推奨しないけど。
という訳で、適当に独り言を語ってみる。
単体テストって、例えば...
Queueという名前のクラスがあって、そのクラスの中に
Enqueue、Dequeue、Peek、Clearメソッドが定義されていたら、それらメソッドを呼び出して、その結果を予想するコード(テストコード)を書いて実行させる方法がオブジェクト指向プログラマーにとって一般的だと思うけど...その際にprivateメソッド(内部実装)をテストコードから呼び出さないといけない理由がわからん。
スレタイに従えば、privateを呼び出したいみたいだが、>>1の発言を見るとprivateの呼び出しは推奨しないように見える。
まぁ、私も推奨しないけど。
という訳で、適当に独り言を語ってみる。
単体テストって、例えば...
Queueという名前のクラスがあって、そのクラスの中に
Enqueue、Dequeue、Peek、Clearメソッドが定義されていたら、それらメソッドを呼び出して、その結果を予想するコード(テストコード)を書いて実行させる方法がオブジェクト指向プログラマーにとって一般的だと思うけど...その際にprivateメソッド(内部実装)をテストコードから呼び出さないといけない理由がわからん。
42デフォルトの名無しさん
2020/07/05(日) 23:28:17.41ID:LRfXHt7v t-wadaさんがどういう人か調べてみたところ、日本が誇るJavascript使いなんだな。
すると、t-wadaさんの立場ではprivateをテストしないというのは全くもって正しいと思う。
privateでやる事はライブラリを呼び出すだけなので、テストするのは無駄。
しかし、他の言語ではアルゴリズムの実装という仕事があり、アルゴリズムの実装をテストしたいという要求は常に存在する。
すると、t-wadaさんの立場ではprivateをテストしないというのは全くもって正しいと思う。
privateでやる事はライブラリを呼び出すだけなので、テストするのは無駄。
しかし、他の言語ではアルゴリズムの実装という仕事があり、アルゴリズムの実装をテストしたいという要求は常に存在する。
43デフォルトの名無しさん
2020/07/05(日) 23:48:39.22ID:LRfXHt7v 例えば多くのパーサーは公開メンバとしてpush()を持つ。
文字をプッシュする関数だ。
めぼしい公開メンバはこの程度しかない。
しかしその裏に100を超える非公開のメンバがあっても驚かない。
非決定性のパーサはその程度のメンバを持つ。
文字をプッシュする公開メンバ一つで、多くの状態、多くのメンバをテストするのは面倒な話で、何方にせよ非公開のメンバ、非公開の状態変数について知識が無ければテストできない。
だったら内部の状態について一切テストしないか、内部の状態を直接テストするか二択となる。
内部の状態についてはブラックボックスとして扱うべきと述べているのがt-wadaさんだが、それでは実装が非常に困難だ。
文字をプッシュする関数だ。
めぼしい公開メンバはこの程度しかない。
しかしその裏に100を超える非公開のメンバがあっても驚かない。
非決定性のパーサはその程度のメンバを持つ。
文字をプッシュする公開メンバ一つで、多くの状態、多くのメンバをテストするのは面倒な話で、何方にせよ非公開のメンバ、非公開の状態変数について知識が無ければテストできない。
だったら内部の状態について一切テストしないか、内部の状態を直接テストするか二択となる。
内部の状態についてはブラックボックスとして扱うべきと述べているのがt-wadaさんだが、それでは実装が非常に困難だ。
44デフォルトの名無しさん
2020/07/05(日) 23:55:21.34ID:LRfXHt7v パーサーの話ついでに、もう一つアイデアを提供しよう。
決定性パーサーでは、還元が行われたとき、外部に影響を及ぼす。
通常この時点で意味動作を行う。
t-wadaさんは、この時に限りテストを行うべきであり、それ以外でテストを行ってはいけないと述べる。
つまり、シフトが行われるときはテストしてはならない。
今どの状態にあるかは外部にかかわりのない事なのでテストとしてはならない。
入力文字として改行を与えるとどの状態に遷移するかテストしてはならない。
これは厳しすぎやしないだろうか?
決定性パーサーでは、還元が行われたとき、外部に影響を及ぼす。
通常この時点で意味動作を行う。
t-wadaさんは、この時に限りテストを行うべきであり、それ以外でテストを行ってはいけないと述べる。
つまり、シフトが行われるときはテストしてはならない。
今どの状態にあるかは外部にかかわりのない事なのでテストとしてはならない。
入力文字として改行を与えるとどの状態に遷移するかテストしてはならない。
これは厳しすぎやしないだろうか?
45デフォルトの名無しさん
2020/07/06(月) 00:01:34.67ID:NTI0gQuc 詳細を知ってはならないということは、どの状態を経てその記号が生み出されたのか知ってはならないということであり、これは非常につらい。
46デフォルトの名無しさん
2020/07/06(月) 00:03:58.43ID:NTI0gQuc システム利用者がシステム作者に「詳細を検査しちゃだめじゃないか!」と怒っているように見える。
2020/07/06(月) 00:24:27.58ID:bo8iccWD
>>42
t-wadaはもともとJavaな人
t-wadaはもともとJavaな人
48デフォルトの名無しさん
2020/07/06(月) 00:27:13.73ID:NTI0gQuc クリスマスプレゼントが何かを知るために箱を振って音を聞くよりも、箱を開けて直接見るほうが早い。
49デフォルトの名無しさん
2020/07/06(月) 00:29:02.17ID:NTI0gQuc 箱を振って「プレゼントはプリキュア」と観測できたとする。
これは果たしてどの程度もっともらしいだろうか?
これは果たしてどの程度もっともらしいだろうか?
2020/07/06(月) 01:18:51.21ID:gvRhXNla
privateなメソッドの動きが仕様書で定義されてたらテストしなくちゃいけないし書いてなかったら書く必要無い
そしてprivateなメソッドの仕様まで定めた仕様書は俺は見たことない
そしてprivateなメソッドの仕様まで定めた仕様書は俺は見たことない
2020/07/06(月) 02:20:25.77ID:T074ZQpk
>>47
うるせーばか。文句を言うために都合の良いデータを調べてきたに決まってるだろ
うるせーばか。文句を言うために都合の良いデータを調べてきたに決まってるだろ
2020/07/06(月) 07:14:05.86ID:EsDpeV3E
一気に胡散臭くなったな
2020/07/06(月) 07:37:12.27ID:ODctk1XU
2020/07/06(月) 07:38:08.27ID:cDMo9043
書いてない関数を勝手に作るなんて禁止に決まってるだろ
テストのためだけに関数は作らない
テストのためだけに関数は作らない
2020/07/06(月) 07:59:18.67ID:ODctk1XU
>>54
すごい、そんなガチガチなの銀行系?
すごい、そんなガチガチなの銀行系?
2020/07/06(月) 08:00:23.42ID:ODctk1XU
関数を作るのに許可がいるなんてすごいことだからとてもすごいと思いました
2020/07/06(月) 09:07:12.86ID:aZiq8mUC
>>1にはテストとしか書かれていないけど、記事元はユニットテスト(単体テスト)の話だよね?
2020/07/06(月) 10:09:49.30ID:Smcv6rvz
組み込みでの話らしいよここw
2020/07/06(月) 10:19:56.49ID:cDMo9043
>>57
ユニットテスト以外でメソッドのテストなんかするのか?
ユニットテスト以外でメソッドのテストなんかするのか?
2020/07/06(月) 12:11:06.79ID:O9yimTr2
2020/07/06(月) 12:27:52.10ID:aZiq8mUC
>>59
自分であたかも他のテストがあるように言っておいて変な話だがだが、しないね。
単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
自分であたかも他のテストがあるように言っておいて変な話だがだが、しないね。
単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
2020/07/06(月) 12:34:18.82ID:aZiq8mUC
2020/07/06(月) 12:35:06.14ID:aZiq8mUC
ミス。テストコード実行場所とテスト対象が同じ階層に書かれているのはなんで?だ。
64デフォルトの名無しさん
2020/07/06(月) 14:43:00.46ID:NTI0gQuc 和田理論は穴が多くてお話にならないな。
2020/07/06(月) 14:44:50.89ID:40IRbGG5
では穴のない理論をおなしゃす
66デフォルトの名無しさん
2020/07/06(月) 14:51:45.46ID:NTI0gQuc 和田理論に騙された人は抗議したほうが良い。
2020/07/06(月) 14:54:43.27ID:EsDpeV3E
wadaは忘れろ
privateだからテストしなくていいなどという都合のいい法則は存在しない だがprivateだからとテストをしないキチガイは確実に存在するのだ
privateだからテストしなくていいなどという都合のいい法則は存在しない だがprivateだからとテストをしないキチガイは確実に存在するのだ
68デフォルトの名無しさん
2020/07/06(月) 15:05:56.82ID:NTI0gQuc 和田理論被害者の会ひつよう。
とてもひつよう。
とてもひつよう。
2020/07/06(月) 15:07:12.95ID:bo8iccWD
一意見を急に”理論”とか”法則”とか言う方が頭どうかしてるよ
t-wadaはTDDをわかりやすく解説することに定評があるだけ
ただいろんな会社からテストのコンサルティングで雇われる程度には有能だから
君たちの意見よりは一般には受け入れられやすい
t-wadaはTDDをわかりやすく解説することに定評があるだけ
ただいろんな会社からテストのコンサルティングで雇われる程度には有能だから
君たちの意見よりは一般には受け入れられやすい
70デフォルトの名無しさん
2020/07/06(月) 15:10:07.70ID:NTI0gQuc 和田理論被害者の会ニューヨーク支部もひつよう。
とてもひつよう。
とてもひつよう。
2020/07/06(月) 15:12:35.36ID:Smcv6rvz
このスレ、脱線が好きだなw
72デフォルトの名無しさん
2020/07/06(月) 15:14:01.90ID:NTI0gQuc 前スレで王家秘伝のレシピ教えたのに。
誰も活用しないんだな。
誰も活用しないんだな。
73デフォルトの名無しさん
2020/07/06(月) 15:17:52.38ID:NTI0gQuc 俺も活用していないわそういえば。
2020/07/06(月) 15:18:30.87ID:9+hHOd2F
>>61
> 単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
単体テストで不具合を見つけた後にするもの=デバッグ
デバッグの前にする不具合を見るけるもの=テスト
だろ?
テストの後にするデバッグは、テストではなくデバッグだしねって
あんた何言ってるの?
> 単体テストで不具合を見つけた後、デバッガを使って更にどこにバグの原因が潜んでいるのか分析することはあるけど、それはもはやテストではなくデバッグだしね。
単体テストで不具合を見つけた後にするもの=デバッグ
デバッグの前にする不具合を見るけるもの=テスト
だろ?
テストの後にするデバッグは、テストではなくデバッグだしねって
あんた何言ってるの?
2020/07/06(月) 16:05:37.75ID:n2uckING
オブジェクト指向の話をしよう
彡ミ
↓↓↓
彡 ⌒ ミ
(´・ω・`) 頭皮、毛髪に触れるものは全て検査する
彡ミ
↓↓↓
彡 ⌒ ミ
(´・ω・`) 頭皮、毛髪に触れるものは全て検査する
2020/07/06(月) 17:22:23.35ID:aZiq8mUC
2020/07/06(月) 17:32:36.88ID:zkbL7M3i
2020/07/06(月) 18:58:02.99ID:9+hHOd2F
2020/07/06(月) 20:17:44.91ID:pO1U5uVJ
80デフォルトの名無しさん
2020/07/06(月) 22:24:42.23ID:djm9krVS まだプログラミング教室やってんのかw
2020/07/07(火) 11:04:13.93ID:hnvy2tUT
>>78
(テストとデバッグは違う作業だと思うのだが)
(テストとデバッグは違う作業だと思うのだが)
2020/07/07(火) 11:33:22.19ID:hnvy2tUT
もしかすると、バグの原因を調査する作業はテストに含まれるかどうかって話かな?
83デフォルトの名無しさん
2020/07/07(火) 11:34:20.85ID:zTLocdwC 和田メソッド被害者の会に入れてほしいです。
2020/07/07(火) 11:40:38.80ID:YBf2Aagc
2020/07/07(火) 12:01:27.16ID:hnvy2tUT
突っ込みどころねーじゃんw
それなのに喧嘩腰で突っ込んで周囲に突っ込まれただけか。
それなのに喧嘩腰で突っ込んで周囲に突っ込まれただけか。
2020/07/07(火) 12:04:20.99ID:bdixmHft
privateメソッドのチェックもできない奴は出荷すんぞ
2020/07/07(火) 12:25:55.22ID:NlNPNtxk
privateのチェックって具体的にどうやるの?
Queueというクラスをテストするケースを例に教えて。
Queueというクラスをテストするケースを例に教えて。
2020/07/07(火) 12:31:21.40ID:jam8vymb
queue = Queue()
queue.push(17)
asserEqual( queue.length, 1)
a = queue.pop()
assertEqual( a, 17)
assertEqual( quele.length, 0)
だいたいこんなもんだろ。
queue.push(17)
asserEqual( queue.length, 1)
a = queue.pop()
assertEqual( a, 17)
assertEqual( quele.length, 0)
だいたいこんなもんだろ。
2020/07/07(火) 12:37:00.92ID:NlNPNtxk
>>88
おお、俺もそんなのイメージしてた。
そんなコードでpublic経由でprivateを呼び、ついでにカバレッジテストとか済ませる感じかな。
...だったらいいのだが、なーんか、このスレの人達の言動を見ていると怪しいんだよな。
88は別に問題ないけど。
おお、俺もそんなのイメージしてた。
そんなコードでpublic経由でprivateを呼び、ついでにカバレッジテストとか済ませる感じかな。
...だったらいいのだが、なーんか、このスレの人達の言動を見ていると怪しいんだよな。
88は別に問題ないけど。
2020/07/07(火) 12:56:17.65ID:NlNPNtxk
カバレッジテストをするかどうかは、ケースバイケース。どちらでもいいとして、一番気にしているのは、そもそも>>1の記事主に批判的な人はオブジェクト指向を理解しているのか?という点。
怪しいというのは、そこね。
怪しいというのは、そこね。
2020/07/07(火) 13:10:52.54ID:YBf2Aagc
92デフォルトの名無しさん
2020/07/07(火) 13:14:04.43ID:zTLocdwC93デフォルトの名無しさん
2020/07/07(火) 13:19:42.71ID:zTLocdwC どうやら図星だったようですね。
Javaではありがちなんですよ。
Javaではありがちなんですよ。
2020/07/07(火) 13:28:08.57ID:RJk/Rw+W
2020/07/07(火) 13:34:52.03ID:YBf2Aagc
96デフォルトの名無しさん
2020/07/07(火) 14:34:40.27ID:zTLocdwC >>95
Java!Java!
Java!Java!
97デフォルトの名無しさん
2020/07/07(火) 14:48:31.09ID:zTLocdwC98デフォルトの名無しさん
2020/07/07(火) 14:56:56.51ID:zTLocdwC オブジェクト指向はダメなんじゃないか?というのが前スレの趣旨で、非公開のメンバは何のためにあるの?テストどうするの?という話になった。
それに対する回答が「非公開のメンバはブラックボックスとして扱いテストしてはならない」という和田メソッドが示された。
それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。
つまりそれは太陽系よりもはるかに広く、銀河の向こうまでテストするということである。
それに対して「オブジェクト指向を知らない」などと抜けたことを言うので、「Java!」という結論が出された。
それに対する回答が「非公開のメンバはブラックボックスとして扱いテストしてはならない」という和田メソッドが示された。
それに対して「入力に使われる一つのメンバしかもたないパーサ」という実例を挙げ、「文字列を入力され構文木を返すような状態機械のテストが非常に困難」という話が出た。
この場合、内部を観測できないのであれば、すべての入力の組み合わせ(受理できない入力もテストするなら、それは無限である)に対して、すべての取りうる構文木のセットを検査しなければならない。
つまりそれは太陽系よりもはるかに広く、銀河の向こうまでテストするということである。
それに対して「オブジェクト指向を知らない」などと抜けたことを言うので、「Java!」という結論が出された。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 外務局長「中国さんごめんなさぁ...」小野田「中国なんかどうでもいいっ!」高市「首脳会談したい」マスコミ「立憲が悪いっ!!」 [237216734]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】日本人「日本が中国と戦争になったら世界中の国が応援してくれるぞ!」 [616817505]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
