☆はじめに☆
JavaEEの機能は、去年作ったファイル転送Webアプリだと、WebSocketの機能しか使ってなかったし、
そんなユニットテスト書くくらい難しいの自体作ってないんだよね。
で、今回は、JavaEEをもうちょっとしっかり使おうかなと。
とりあえず、JavaEEが提供しているJAX-RS、CDI、JPAあたりを使ってWebアプリケーションを作ろうと思ったんだけど、
これ、どれもユニットテストがめんどくさい。
まぁ、JAX-RSは、問題領域とは直接関係ないから、ユニットテストの対象からは外すとして、問題はCDIとJPAだよね。
JavaEE自体は、関数の集まりみたいなライブラリと言うよりは、コンテナだから、
ユニットテストするためには、そのコンテナを再現しないといけないんだよね。
特に、CDIはコンテナそのものって感じだしね。
あとは、環境に依存したリソースの表現だよね。
JPAは、永続化先を抽象化してくれるけど、ユニットテストの時は、それが逆にめんどくさいことに。
でも、抽象化されること自体は便利だからやっぱりJPAは使うよね。
なんか、Mockって言うの作って対応したりする例とかよくWebで見かけるんだけど、
DBとかに繋げば良いだけなのに、そんなの作るのめんどくさいよね。
きっとそれが必要な時もあるんだとは思うけど。
☆準備☆
さて、ユニットテスト環境を作るにしても、何か想定はしないとダメだよね。
今回は、こんな条件を付けてみるよ。
- ゴール:JavaEEのWebアプリ向けに問題領域のユニットテストとしてのコンテナを用意して簡単に使えるようにする。
- ユニットテストには、JUnitを使う。
- CDIとJPA(とJTA)を何となく使えるようにする。
- ユニットテストでJPAは1個の接続先を使う。
- JavaSE向けの実装は、WeldとEclipseLinkのGlassFish4.1のバージョンを使う。
- Mock系のライブラリとかは使わない(使うといろいろ楽だけど依存しない)。
- ビルドにはMavenを使う。
で、ちょっと書き出してから気づいたんだけど、これ、結構長くなる……。
ってことで分割したよ。
ホントいつも流れで書いてごめんなさい(゜▽、゜
[url=http://www.g0t75o64sb99wvy0xt03u4zzdl94c342s.org/]uvhokhwddw[/url]
<a href="http://www.g0t75o64sb99wvy0xt03u4zzdl94c342s.org/">avhokhwddw</a>
vhokhwddw http://www.g0t75o64sb99wvy0xt03u4zzdl94c342s.org/