ふぐ鍋で忘年会と言う事で、例により開始5時間前くらいに集まって雑談してました。例により無駄に濃い内容でしたが、その中でも気を引いたのがうらがみさんのお話で、O/Rマッパーのそれぞれに対してテストコードを書かれてました。欲しくなったので*1鍋食いながら催促してみたら、その場で GitHub にあげていただけました。
忘年会が終わってからスタバで二次会(アルコール無し)、屋外で寒さに震えながらも早速 clone して mvn eclipse:eclipse して option+command+X からT で実行!
No JUnit tests found.
……。
どうも TestNG のテストコードのようです。TestNG プラグイン入れてないよ…。しかしここでプラグインを入れたら負けです。単に面倒だっただけですが。そんな事いってたら「Runner 作ったら?」と言われたので適当に書きました。
これで RunWith すれば JPASample は実行出来ました。他は知らない。
やったこと
- BlockJUnit4ClassRunner を継承。
- テスト対象メソッドを取得してる computeTestMethods をオーバーライド。
- BeforeMethod/AfterMethod を実行するために methodInvoker をオーバーライド
- withBefore/withAfter をオーバーライドしなかったのは2カ所面倒だったから…。
- BeforeMethod の実行順(dependsOnMethodsで設定される)をリストのソートで無理矢理適用。
例外処理とかその辺は考えてません。他の諸々の機能も無視です。知りませんし。とりあえず動けばいいやって感じでやりました。でも TestNG のコードも Runner 書けば JUnit で動かせるってことです。だからどうしたとか、本末転倒とか車輪の再発明とか、その辺は気にしたら負けです。
さーてプラグイン入れるか
*1:自分で書けよ