我正在使用JDBC连接MySQL以获得一个小应用程序。为了在不改变真实数据库的情况下进行测试,我在内存中使用HSQL进行JUnit测试。
我正在使用Spring进行DI和DAO。以下是我配置HSQL数据源的方法
<bean id="mockDataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:mockSeo"/>
<property name="username" value="sa"/>
</bean>
这适用于使用模拟DB的JUnit测试。但是当我尝试运行main方法时,我发现以下错误:
Error creating bean with name 'mockDataSource' defined in class path resource [beans.xml]:
Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException:
Could not load JDBC driver class [org.hsqldb.jdbcDriver]
我正在运行Eclipse,而我正在使用Maven插件。是否有理由将其用作测试,而不是main()
?我知道main
方法本身不是问题,因为如果我从Spring配置文件中删除对HSQL DataSource的所有引用,它就会起作用。
答案 0 :(得分:3)
当您将应用程序作为“Java应用程序”运行时,m2eclipse不会将测试范围的依赖项添加到类路径中。您需要将hsql依赖项的范围更改为“compile”(默认值)才能实现。