2010-05-21 57 views
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數據源的所有引用,它就會起作用。

回答

3

當您將應用程序作爲「Java應用程序」運行時,m2eclipse不會將您的測試範圍的依賴關係添加到類路徑中。您需要將hsql依賴項的範圍更改爲「編譯」(默認值)以實現此目的。

相關問題