1
我正在使用JDBC連接到MySQL的一個小應用程序。爲了在不改變真實數據庫的情況下進行測試,我在內存中使用HSQL進行JUnit測試。爲什麼我可以爲我的Spring項目運行JUnit測試,但不是主要方法?
我對DI和DAO使用Spring。下面是我如何配置我的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測試。但是當我嘗試運行主要方法時,發現以下錯誤:
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數據源的所有引用,它就會起作用。