Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

@TableAssertだと何がいいのか

僕の作っているTestNG + DbUnitライブラリでDBとのアサートをアノテーションで指定できるわけですけど。

@TableAssert(names = "dept", pathname = "insert_expected.xml")
@SetUpOperation(pathname = "dept.xml", value = DatabaseOperationType.DELETE_ALL)
public void testTableAssert() {
	insert();
}

テーブルとのアサートをアノテーションにしよう、っていう思いつきで作ったんだけど、
よくよく考えると、プロジェクトで作るようなスーパークラスにこういうメソッドを作って、呼び出すというのとそう変わりはない気がした。


アノテーションによってコード量がそこまで減るわけでもないし。。。


ただ、アノテーションというのは処理のインタフェース(実装ではなく仕様の入り口)として優れてると感じた。
この@TableAssertだって処理に必要なデータが属性としてまとまっているから、ここだけ見れば必要なすべてわかる。


この属性を使ってどうこう、という実装はまったく別にあるわけで、目には入らない。


@TableAssertによって、このテストメソッドはDBと比較するんだなとすぐにわかる。
そして、比較するファイルや対象テーブルも属性を見てすぐにわかる。
あとあとのテストのメンテナンスという意味でも。アノテーションにしたことでわかりやすくていいんじゃないかな。