JUnit CDI Extensions プロジェクト

S2JMS をはじめとして,マイナープロダクトばかりやってる自分ですが,その中でも Aptina の不人気ぶりはちょっとすごいです.

なんたって 11 月も 12 月もダウンロード件数が 1 件!!
ダウンロードしてくれた人,ありがとう.
あなた達がいなかったら 0 件が続いてた所だったよ.
今月? もちろん今のところ 0 件ですが何か?


Annotation Processor を作ろうと思ったら Aptina Unit は便利だと思うんだけどなぁ.
APT の API ってわかりにくいので,ドキュメントだけ見てサクサク使える人ってそうそういないと思うんですよね.
そんな場合に Aptina Unit は試行錯誤を助けてくれるのですが,そもそも普通の人は APT 自体を使いたくならないのかも?
あれを使いたくなるようなマゾな人だったら,Aptina Unit くらいのはサクッと作るか,それこそマゾだからそんなのなくても平気なのか...?
まぁ,中村さんが Doma で使ってくれてるだろうからよしとしよう.


ともあれ (JW),そんな自分がまたしても不人気間違いなしのプロジェクトを始めました.
JUnit CDI Extensions プロジェクトです.

JSR-299 Contexts and Dependency Injection いわゆる CDI です.
正直 CDI が流行るとは思えないのですが,とりあえず触ってみようという人くらいはいる... のか?
ともあれ (JW),そんな人たちは 2 種類に分けられます.


AP サーバを立ち上げる人と,立ち上げない人です.


自分は後者です.
自宅のマシンで最後に JavaEE な AP サーバを立ち上げたのはいつのことやら.
ソースを読むためにダウンロードはしてあるけど,もう何年も立ち上げてないはず.
Tomcat ですら滅多に立ち上げません.Teeda のメンテをするときくらい.


そんなわけで (どんなわけで?) CDI で遊ぶにも AP サーバを使うつもりは最初からありません.
そんなことするくらいだったら CDI には手を出さない.
幸い,CDI の RI である JBoss Weld は JavaSE で動くサンプルが付いてます.
そこで CDI で遊ぶための足場があると便利だなってことで,JUnit のテストクラスで CDI を使えるようにしたのがこのプロジェクトです.
ようするに S2JUnit4CDI 版.
つまりこうすると...

@RunWith(CDI.class)
public class XxxTest {
    ...
}

CDI コンテナ (JBoss Weld) をブートします.
テストクラス自体も CDI 下でインスタンス化されるので,

@RunWith(CDI.class)
public class XxxTest {
    @Inject
    XxxBean xxx;
    ...
}

とかすることができます.


これで手軽に CDI で遊べるようになりました.