Fight the Future

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

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

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

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

DbUnitのアノテーション対応 ( with TestNG )

こんなのしたくない??

	@SetUpOperation(value = DatabaseOperationType.CLEAN_INSERT, pathname = "org/dbunitng/dept-emp.xml")
	@Test
	public void verifySelectAllFromDept() {
		// call target method and assert...
	}


要はDbUnitアノテーション対応。
@SetUpOperationでテスト実行前にテストデータを投入する。
アノテーションの属性でDbUnitのDatabaseOperationを指定したり、テストデータのファイルを指定したりできる。


Javaにおいてデータベースと連携した自動テストはDbUnitデファクトスタンダードだけど、なんか面倒なんだよね、DbUnitって。
DatabaseTestCaseを継承したり*1、setUpやtearDownでOperationを指定したり、投入するデータ読み込んだりとか。


アノテーションに対応したらちょっと楽になるかな、とか思った。
なので、作ってみました!*2


さすがに単体ではできないので、TestNGと連携させます。
TestNGのリスナーとしてDbUnitとの連携を実現します。
testng.xmlにリスナーを記述します。

	<listeners>
		<listener class-name="org.dbunitng.listeners.DbUnitNGTestListener"></listener>
	</listeners>

あとはテストメソッドにアノテーションを指定するだけ!
テストデータはDbUnit形式のXMLまたはExcelファイルに記述します。


ここまで書いていたら、ソースを落とせた方がいいと思ったので、SourceForge.JPにプロジェクトを申請しました。
ってニーズはあるのかな??

*1:しなくてもIDatabaseTester実装クラスを使う方法もあるけど

*2:実は会社で開発させてもらってます