Fight the Future

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

プレゼン、ボランティアコーチします!

勉強会で話したいけど、プレゼンが初めて、苦手という方に無償でコーチします!

  • スライドのレビュー
  • 録画リハへのアドバイス

Twitter@jyukutyoまでメンションでもDMでも。 デブサミやJJUG CCCなど200人規模で登壇しました。海外での登壇も短いながらあり。デブサミ2017では公募スピーカー1位でした!

@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と比較するんだなとすぐにわかる。
そして、比較するファイルや対象テーブルも属性を見てすぐにわかる。
あとあとのテストのメンテナンスという意味でも。アノテーションにしたことでわかりやすくていいんじゃないかな。