@t_wada デフォルトで成功には違和感を覚えますね。。。故にIDEのJUnit自動生成ではスケルトンコードで失敗するようになっているんでしょうけど。一番怖いのがリファクタリング時にもし何かassertを消してしまった場合にも成功するというのが。
2011-05-22 16:05:24@kyon_mm リファクタリングで assertion を消すことがあるかは疑問ですが、デフォルト成功というところには予想以上に多くの初心者が足を取られているようですね。
2011-05-22 16:11:01@t_wada JUnit使い始めた人ってデフォルトで成功というのを気にしていないので、リファクタリング時の確認がかなりおろそかになっています。(それがPGとしてダメという話もありますが。
2011-05-22 16:14:42JUnitのデフォルト成功がいい点ってあまり無いよね。。。mainメソッドつくるの面倒だから@Testで実行させてみるとかはあるかもしれないけど、それにしたって。。。
2011-05-22 16:21:27@kyon_mm 面白いけどJUnitではテストケースとassertメソッドは実装が独立している、というのが原則だからな−。そうしないとカスタムアサーションが作りづらくなっちゃう。
2011-05-22 16:30:50@setoazusa そうなんですよねー。そのおかげ?でGroovyでもJUnitを楽に拡張できたんだろうなーとは思っていますし、自分でも作りやすいんだろうなーって。で、JUnit4からはアノテーションで区別できなかったのか。とたまに思うのです。
2011-05-22 16:37:13自分でユニットテストフレームワークを作ってみて分かったのは、テストランナー、テストクラス、アサーションを別々に設計して、独立性を高めた結果、テストはデフォルト成功扱いになる感じ。ランナーとアサーションの結合を受け入れることで、デフォルト失敗に修正した。
2011-05-22 16:28:36@quicy なるほどなるほど! @setoazusa さんも言っていますが、結合度、拡張性などとのトレードオフ関係を考えた上での設計判断なのですかね。つぶやいてみてよかったです。
2011-05-22 16:36:57assertを全く書かず、基準以上のコードカバレッジとjunitがグリーンという結果でテスト完了、と判断してしまう現場が出てきてるからなー >デフォルトグリーン
2011-05-22 16:33:42Assertionフリーテスト問題は、「テストの進捗をとりあえず上げたい」という欲望に根ざしているので、デフォルト失敗にしてもassertTrue(true)とかやっちまうんじゃないだろうか。
2011-05-22 16:38:37JUnit4は@Testだとデフォルト失敗で@TestDefaultSuccessだとデフォルト成功。とかにしてほしかった。
2011-05-22 16:38:56@TestDefaultSuccessは原則禁止とかプロジェクトで決めればいいわけで。使うときはコメントなり仕様書に反映なりなんなり的な。
2011-05-22 16:40:56Assertionフリー問題は、前職でリアルに経験しました。それを経験するまでは、テストツールをデフォルト失敗にはしなかったと思う。テストツール作る側にとって「まさかそんなことあるわけw」という頭は、どうしてもあったなぁ...。
2011-05-22 16:41:58@goyoki @t_wada テストケースのあるコードをリファクタリングしててassertがコメントアウトされていた時の絶望感と言ったら、、、、
2011-05-22 17:33:22もともとTDDの教えを先に知ったのでJUnitのデフォルトGREENに違和感は特になかったり。PHPで書くときはまずREDにするところまでを準備と受け入れている。
2011-05-22 19:50:35