Arquillianで結合テストをしてみる

単体テストJUnit)では起きない(=パスする)けど、システムテストで見つけるのでは遅すぎる、そんな類のバグを結合テストで検出したい。ってことで、Arquillianを使うことにした。

毎回ちまちまとやってる同じような回帰テストを継続的に自動実行できるようになればいいかなと。まだ使い始めだけど、チュートリアルから触ってみたメモを述べておく。

  • Getting Startedで紹介されているWeld EE 1.1では、@StatelessのついたEJBはDIできない。実際に使う場合のEJBのテストは素直にJBoss ASとかGrassfishを使おう。
  • JBoss AS5.1.0.GAでは、「Embedded」のコンテナは使えない。結合テストをさくさくと実施するなら、予めASをたちあげておいて、「Remote」を使うか、「Managed」を使おう。
  • ArquillianはGradleやAntでも使えるけど、茨の道。おとなしくMavenを使おう(Antはドキュメントも揃ってないし)。
  • JBossMavenリポジトリは新しくなっているので、pom.xmlに忘れずに書いておこう。以下の2つを追加したらOKだった。
  • 素直な(?)環境のWindowsだと、JBoss AS5.1.0.GAを「Managed」で使えない。原因は、JAVA_HOME環境変数の値として"C:\Program Files"みたいにスペースがあるとダメ(tools.jarがNoClassDefFoundErrorになる)。通常は"C:\Program Files\Java"の下にJDKがインストールされるので、"C:\Java"の下にインストールしたところ起動した。

とまぁ、色々試して、ArquillianからJBoss ASが起動されようにはなったんだけど、テストが実行されない…(こちらは未解決)。まぁモックによる単体テストとシナリオテストの隔たりを埋めるツールとして大いに期待してるので、もう少しがんばってみよう。

しかし、今までずっとAntでビルドしてきたけど、JBoss、というかJava EEやるならやっぱMavenとかGradleがベターだね。使って便利さに気づいた。