回答編集履歴
4
余談
test
CHANGED
@@ -133,3 +133,27 @@
|
|
133
133
|
みたいにいくらでも抜け道ができて困る
|
134
134
|
|
135
135
|
ということですよね?
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
---
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
余談
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
str -> str + "hoge"自体のテストを抜け道潰して行おうとすると
|
148
|
+
|
149
|
+
exceptで同じ関数を実装することになって意味がなくなります。
|
150
|
+
|
151
|
+
こういう場合はProperty based testというものを行います。
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
f(x).substring(0,x.length()).equals(x);
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
みたいな関数それ自体の性質を何個か作り、それをテストします。
|
3
修正
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
いや、特定の引数に対して変な値を返すように"悪意をもって"実装すればテスト通りますが、
|
19
|
+
いや、特定の引数に対して変な値を返すように"悪意をもって"実装すれば高確率でテスト通りますが、
|
20
20
|
|
21
21
|
要するにテストの文面でランダム値を使うことで、
|
22
22
|
|
@@ -26,7 +26,9 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
+
ただ、この程度の関数だと、質問文のコードのままで意図が十分伝わるはずので
|
30
|
+
|
29
|
-
|
31
|
+
全然問題ないことになっちゃいますがね。
|
30
32
|
|
31
33
|
|
32
34
|
|
2
補足
test
CHANGED
@@ -9,6 +9,24 @@
|
|
9
9
|
|
10
10
|
|
11
11
|
"悪意を持った"実装者がよほど運が良くなければテスト通りません。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
---
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
いや、特定の引数に対して変な値を返すように"悪意をもって"実装すればテスト通りますが、
|
20
|
+
|
21
|
+
要するにテストの文面でランダム値を使うことで、
|
22
|
+
|
23
|
+
実装者に「入力としてあり得るすべての値でテスト通るようにしろ」
|
24
|
+
|
25
|
+
という意図を伝える事ができるってことです。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
そういう意味では別に質問文のコードのままで全然問題ないことになっちゃいますがね。
|
12
30
|
|
13
31
|
|
14
32
|
|
1
回答追加
test
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
少々乱暴な方法ですが、
|
2
|
+
|
3
|
+
関数と関数が同じかを確かめる方法の一つに、
|
4
|
+
|
5
|
+
十分多い数、引数をランダム生成して、
|
6
|
+
|
7
|
+
全部通るか検証する方法があります。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
"悪意を持った"実装者がよほど運が良くなければテスト通りません。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
---
|
16
|
+
|
17
|
+
|
18
|
+
|
1
19
|
※回答じゃないです
|
2
20
|
|
3
21
|
|