現状、実務ではDBのテストでは基本的にarquillianを使っています。
arquillianとにかく、重いですね~。
まあglassfishを動かしているので仕方ないかもしれませんが、簡単なテストをするのに1分近くかかります。
このブログもarquillianの待ち時間で書いています。そうでないと待ち時間に耐えられないので・・・(汗)
そんなこんなであまり好きではないのですが(汗)、本日ライブラリが動かないというバグが発生しました。
Apache commonsのライブラリが動かないんです。(もちろんApache commonsだけではありません。依存状態にあるライブラリ全般が動きません。)
ライブラリが動かないといっても本来のプログラムの中にライブラリを使っている場合は問題ないんですが、テストコードの中に依存状態があるライブラリを書くとNodefClassDefFoundエラーがでます。
で、結構はまっており、最初はライブラリのスコープが間違っているのかな?と思ったのですが、いろいろやってみても駄目でした。
社長ともいろいろ相談し、結局はarquillianの上で動いている場合、クラスパスが通常の場合と異なっているためでした。(←この解釈間違ってるかも・・・)
ただarquillianのテスト環境でも通常の状態と同様の環境を再現することは可能です。
ライブラリの依存状態を解決する方法として下記のようにpomに記述してあげればOKです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<dependency> <groupId>org.jboss.arquillian.extension</groupId> <artifactId>arquillian-persistence-impl</artifactId> <version>1.0.0.Alpha6</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.shrinkwrap.resolver</groupId> <artifactId>shrinkwrap-resolver-impl-maven</artifactId> <version>2.1.0-alpha-1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.shrinkwrap.resolver</groupId> <artifactId>shrinkwrap-resolver-api-maven</artifactId> <version>2.1.0-alpha-1</version> <scope>test</scope> </dependency> |
参考リンク