Web アプリケーションで DAO を単体テストしようとすると問題が発生します。Sybase JConnect JDBC ドライバーを使用して dataSource Bean を作成するように、Spring 構成をすべてセットアップしました。私の問題は、アプリを webapp として実行したときにのみ Bean を作成できることです。
単体テストを実行しようとすると、次のメッセージが表示されます。
java.lang.ClassNotFoundException: com.sybase.jdbc3.jdbc.SybDriver
さらに説明するために、ここに私のディレクトリ構造があります:
src
main
-java
- ...java files etc
- resources
-applicationContext.xml
-other config files
- webapp
-WEB-INF
-jconn3.jar <---- putting it here works, but test doesn't have a WEB-INF folder!
-test
-java
-resources
では、単体テストの実行時に jconn3.jar が認識されるようにするにはどうすればよいでしょうか。main/resources ディレクトリに配置しようとしましたが、webapp として実行しているかどうかに関係なく、これによりエラーが発生します。ビルド時に jconn3.jar が target/classes ディレクトリにコピーされることがわかりますが、実行時に jar が見つからないのはなぜですか? これを機能させる唯一の方法は、WEB-INF ディレクトリに保持することですが、それに依存する DAO を単体テストするにはどうすればよいでしょうか。
Spring MVC と Maven を使用しています。jar がリポジトリにないため、maven の依存関係を追加できないことに注意してください。また、リモート リポジトリに追加するオプションもありません。
要約すると、DAO 用の jar が必要なため、webapp の実行と単体テストの両方のために、ビルド パスに jar を配置する必要があります。リソースフォルダーに配置しても役に立たないように見える場合、どうすればこれを達成できますか。