2016-06-10 90 views
2

我試圖構建一個Spring Boot應用程序,試圖堅持測試驅動開發。我的問題是我的項目中包含Spring Boot JPA,但實際上並沒有設置數據源。在添加依賴關係之前,我能夠成功運行我的單元測試。在沒有提供數據源的情況下在Spring Boot應用程序中運行JUnit單元測試

既然我已經添加了依賴項,即使試圖執行我的單元測試也會失敗,因爲它無法初始化Spring Data的數據源。

雖然我對JUnit,Spring Boot和Mockito相當陌生。我希望能夠運行我的單元測試,而無需真正擁有數據源,而是嘲笑我的所有存儲庫。

這樣做的正確方法是什麼?

+0

請說明您的具體問題或添加額外的細節,以確切地突出你所需要的。正如目前所寫,很難確切地說出你在問什麼。請參閱如何問問頁面以獲取幫助以澄清此問題。 –

+0

此鏈接可能對您有用:http://stackoverflow.com/questions/34756264/spring-boot-with-datasource-when-testing –

+0

爲測試套件創建單獨的配置文件並禁用JPA的自動配置。 – Vaelyr

回答

5

如果您定義了一些常用於測試的SQL引擎(例如HSQL,Derby或H2),Spring Boot應該將其識別爲測試依賴性並在其上配置Datasource bean。爲了做到這一點,只要定義這樣的發動機用測試範圍:當你介紹生產數據源(例如Postgres的或MySQL)會出現

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <scope>test</scope> 
</dependency> 

問題。在這種狀態下,你將需要

  • 配置測試數據源明確地@Primary註釋
  • 或提供測試配置文件(例如src/test/resources/application.properties),其中H2將被配置。
4

第一步。添加到pom.xml某種內存數據庫。例如h2

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.191</version> 
    <scope>test</scope> 
</dependency> 

然後配置你的測試application.properties位於(src/test/resources)測試數據源:

spring.jpa.generate-ddl=false 
spring.jpa.hibernate.ddl-auto=none 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.H2Dialect 

spring.datasource.platform=h2 
spring.datasource.driverClassName=org.h2.Driver 
spring.datasource.url=jdbc:h2:mem:test;MODE=MySQL;IGNORECASE=TRUE 
spring.datasource.username=SA 
spring.datasource.password= 

這對於mysql支持模式運行內存h2只是例子。但是您可以使用其他模式(sql support),甚至根本不要設置此參數。

相關問題