我有一个问题,我的尝试单元测试我的DAO在一个网络应用程序。我已经将我的spring配置都设置为使用Sybase dataSource JDBC驱动程序创建JConnect bean。我的问题是,我只能在作为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那么,如何允许在运行时对我的单元测试进行识别呢?我尝试过将它放在主/资源目录中,但是这会导致失败,不管我是否将它作为webapp运行。我可以看到,在构建时,jcont3.jar被复制到目标/类目录中,那么为什么在运行时找不到jar呢?让它工作的唯一方法似乎是将它保存在WEB目录中,但是接下来我如何对依赖于它的DAO进行单元测试。
我正在使用Spring和maven。注意,我不能添加maven依赖项,因为jar不在存储库中,我也没有将其添加到远程回购中的选项。
总之,我需要让jar在我的构建路径上运行webapp和单元测试,因为两者都需要用于DAO的jar。当把它放在“资源”文件夹中似乎没有帮助时,我该如何做到这一点。
发布于 2013-03-13 00:49:08
您必须在测试的执行类路径中放置jcont3.jar。如果您正在使用maven,那么您必须在pom中添加对应于您的驱动程序的依赖项。由于中心Maven中没有Sybase JDBC驱动程序,因此必须使用如下命令将其上载到本地存储库:
安装第三方罐子指南
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>一旦您这样做了,您就可以向这个jar添加一个依赖项,就像对maven中心的任何其他jar一样。
<dependency>
<groupId>group-id></groupId>
<artifactId>artifact-id</artifactId>
<version>version</version>
</dependency>从那时起,Sybase驱动程序jar将包含在测试执行类路径中.
您还在将jar添加到WEB目录,而不需要添加jar。Maven非常聪明,可以从依赖项中推断出需要进入war内部的jar文件,这样就可以将其从WEB位置删除。不要担心,当您执行mvn包时,带驱动程序的jar将在war文件中结束。
发布于 2013-03-13 01:27:12
如果没有Maven和标准eclipse,您需要确保它在构建路径中并被标记为库,然后eclipse现在将做什么
https://stackoverflow.com/questions/15374931
复制相似问题