「テスト駆動開発」読書会 Vol.5 に参加
読書・議論した箇所は第二部の最初である18章から23章まで
第2部ではTDDをしながらテストフレームワークを作る、ということをPythonで行っているが 作成しているテストツールの比較例としてJUnitが話題に上がることが多かったです
参加した理由・今まで参加しなかった理由
この勉強会自体は以前から注目していたのですが、少人数の勉強会は参加したことがなかったので若干抵抗があり、 また初回などは一瞬で枠が埋まってしまっていたため、競争率がたかそう、という先入観がありました。 そのため今まで参加していませんでした。第5回は空きがあったので思い切って参加してみました。
テストを実践している人の生の声を聞くのが初めてだったので刺激的な1.5hでした。
18章
- WasRunクラスはテストツールの部分なのか、それともテスト内容なのか?
- PythonのPluggable Selectorパターンを利用している箇所はJUnitだとリフレクションで呼び出している。
- パイソンのIDEは何が良い?
- デフォルトのPycharm派
- Eclipseにpluginを入れて使う派
19章
- setUpをWasRunからTestCaseクラスに引き上げたのはチートくさい。(普通は思いつかない)
- そもそもPythonには組み込みでAssertionがあるのに、このテストツールを作る意義は?
- 3AはデフォルトのAssertionではできない。
- 後々レポート部分なども作ることとなるが、そこまで高機能なものはデフォルトで搭載されていない
- この章はテストツールを作る、ということを体験してもらい自動テストに必要な要素が学べるという重要な側面がある。
20章
- 失敗してもtearDownを呼び出す、というTODOに関して
- このTODOは普通この時点では思いつかないかと。発想が飛躍しすぎ。
kent beckがJunitを作ったと思うけど、その知見がベースになっているのでは?*1*2
- 確かJUnitの引数の順番は私のせいだ(他のxUnitと統一性がない)、という趣旨の懺悔を見たことがある
ちなみにxUnitというのは具体的なソフトウェアの名前ではなく、様々なプラットフォームに置ける単体テストツールの総称であってるか?
- あってる。ちなみに起源はSmalltalkのsUnit。
Pythonのバージョンが2だと動かない。そのことに気付くのに時間がかかった
- 検索したところ後書きに書いてある
- やや不親切。前書きにも書くべきでは?
- もはやPythonは2と3で全く違う言語ですね。
21章
- jUnitだとrunnerとレポーターは疎結合になっている。代償としてasertionのないテストが成功になってしまう。
- rubyだと中身が書かれていない(空の)テストメソッドは失敗扱いになる。
- TestResultクラスがrunCountを持っているのに違和感がある。
22章
テストをコメントアウトしている箇所があるが、これってあり?
- 短期的ならたまにやる。
- 数ヶ月解決に時間がかかるような問題なら@skipや@ignoreで明示すべき。*4
コメントアウトしたことを忘れてマージしてしまわない?
余談
私にとって今まで絵空事だったTDDは今や現実のものとなりつつある 今の職場ではvbを使っているがちょうど本日、TDDの環境が準備できたので明日から実践しようと思う。
1章を5分で読む、というのは最初早すぎるように感じたが、 読書は一人でできるので各自が自宅で時間を欠けて、当日は見直すくらいであまり時間をかける必要はないと思ったので ちょうど良い時間だと思った。