JUnit4のassertThat()って便利なの?
@tadayosi assertThatがいまいち好きになれないのは、括弧の多さと半端な型チェックですかね。あと、プログラマーが英語脳である前提。このあたり#Groovy と組み合わせると結構いい感じに書けそうな気がします。実際、GroovyはさまざまなテストFWと連携できます。
2011-04-29 22:08:04@tadayosi Javaだと型推論が弱いし、記述はかなり面倒な気がするのですよ。その点、まだしも伝統的なassertEquals()の方が、日本人の平均的なプログラマーにとっては、単純で理解しやすいのではないかと思えてしまうのです。
2011-04-29 22:12:43@tadayosi 四則演算でCOBOLの英文のような表記が必ずしも可読性が高くないのと同様に、greaterThanなどは式で表現した方が日本人にとってはわかりやすいのではないかなと。#Groovy だとassert文自体が強力なので、これと式の組み合わせでテストを書けますね。
2011-04-29 22:16:04@ryoasai74 なんだかなぁ.JUnit3 だって標準のままだと配列の検証とかしっくりこないのでは? JUnit4 だって足りないところは補えばいいだけ. http://ow.ly/4L4HY JUnit3 だってそうしてきたのでは?
2011-05-02 21:42:38@shuji_w6e なるほど。確かに、ドメインのオブジェクトなどに対して、独自の条件でMatcherを作成することで、独自言語を拡張できそうです。
2011-05-02 21:43:22@koichik assertEqualsの方は実質的に@Deprecatedと思った方がよいのでしょうかね。お互いにうまく混じり合わない気がするのですよね。
2011-05-02 21:53:02@ryoasai74 JUnit4 には互換性のために JUnit3 が丸ごと含まれていて,assertEquals (Assert クラス) もその一部というだけでしょう.EJB3 の中の EJB2.1 のようなもの.
2011-05-02 22:02:48実質レガシーということですね。RT @koichik: @ryoasai74 JUnit4 には互換性のために JUnit3 が丸ごと含まれていて,assertEquals (Assert クラス) もその一部というだけでしょう.EJB3 の中の EJB2.1 のようなもの.
2011-05-02 22:06:46しまった,JUnit3 の Assert と,JUnit4 の Assert は別物だった.JUnit4 初期が記憶から消えてる.っていうか,後期もというか Java が記憶から消えかけてるw
2011-05-02 22:14:07@ryoasai74 @shuji_w6e それspecification patternに似てるんですかね。Matcherは宣言的な条件(仕様)記述ができるので親和性が高そうです。
2011-05-02 23:05:55@ryoasai74 で僕はあるビーンが満たす条件を宣言的に書きたいなぁと思ってMatcherと格闘してました。でも宣言的に書こうとして突き詰めていくとラムダが欲しくなったのでそこで行き詰まってそのままです><
2011-05-02 23:10:14イマドキだからという理由だけで使ってたりしますw>実はJUnit4のassertThat()ってしっくりこないんです!(特に、メタプログラミングするレイヤでは) - 達人プログラマーを目指して http://bit.ly/jNebJD
2011-05-02 23:19:07@everpeace コメントありがとうございます。コメント追記しました。もともとのassertEqualsはある意味ダックタイプな感じのところがあったのですが、assertThatは比較対象が同じ型を持つ必要があるというところがもっとも思想が違うところかなと思います。
2011-05-02 23:28:17@everpeace まあ、assertEquals()はequals()判定に頼っていて、独自のマッチングがしたい場合独自のassertメソッドを書くということで拡張していたわけですが。
2011-05-02 23:30:47MatcherのパラメーターTについては今でも議論があるいみたいですね。 / Issue 83 - hamcrest - is(Class) and is(Object) both are Matcher<Object>, w… http://htn.to/KkyZih
2011-05-02 23:36:29@everpeace いいえ。ところで、僕の場合新しいライブラリを試す場合にはどうしても懐疑的になる傾向がありますね。コードを書いて本当に有用かどうか試してみるところから入るので、利便性が明確でないとなかなか受け入れられない保守的なところもあるかもしれません。
2011-05-02 23:42:57@ryoasai74 僕正反対ですねw 結構新しいもの好きなので、飛びついちゃいますね。でだめだったらすぐやめるw 良さがわかってきたら使い続ける感じです。
2011-05-02 23:44:13@everpeace EJBに対する疑問からSpringが生まれたように、必ずしも有名なライブラリーや標準であっても、利便性を疑ってみるというのは大切なのではないかと思うのですよね。食わず嫌いはいけないので、積極的に新しいものを試す姿勢も大切ですが、権威に従う必要はないのかと。
2011-05-02 23:46:26@ryoasai74 そうですね。「懐疑」は重要だと思います。フランシス・ベーコンもそういってます。疑惑を持って始まれば確信に終わる。確信を持って始めれば疑惑に終わる。
2011-05-02 23:48:23型比較は躊躇い無くassertEqualsを継続使用していたなぁ。やはり出来る人は拘るんだろうか。。。>JUnit4のassertThat()ってしっくり~- 達人プログラマーを目指して (id:ryoasai / @ryoasai74) http://t.co/vcR15VT
2011-05-03 00:04:50