2017-04-11 84 views
0

我發現極其稀缺的關於在Spring Boot中使用主生產數據庫和測試in-mem數據庫進行典型設置的所有信息。如何在不使用配置文件的情況下爲測試重寫Spring Boot應用程序屬性?

  • 有沒有約定檢驗性能,在測試application.properties覆蓋那些在主顯着,而且也像application-test.properties沒有回退機制 - > application.properties。我不想使用配置文件,因爲我希望他們嚴格定義環境,這是另一個維度(本地,生產),而且我需要笛卡爾產品主要本地,測試本地,主要生產,測試-production ..

  • 所以我會讓Spring爲我做魔術,因此我在我的RepositoryTest上設置了@DataJpaTest註解。 Spring肯定會創建H2 db,但我沒有找到設置自定義模式或啓用H2控制檯的方法,因爲application.properties被忽略。

它是如何處理這個最標準的方法?

P.S.我認爲簡單的方法是通過@SpringBootTest(properties = { "h2.console.enabled: true", "h2.console.path: /myconsole" })覆蓋我的測試中的屬性,但是我無法找到@DataJpaTest綁定它們的方法

+1

H2控制檯需要一個在DataJpaTest中不可用的Web環境。爲什麼要在短暫的內存數據庫中設置自定義模式? –

+0

爲了方便調試所有數據庫的工作 – Whimusical

+0

在春天註冊bean的傳統方式是調用org.h2.server,我不知道爲什麼要配置webenv,我從不需要它在預啓動彈簧 – Whimusical

回答

3

您可以只提供第二個用於測試的application.yml/application.properties在路徑src/test/resources。位於測試環境中的測試環境用於測試,當您運行該應用程序時,將使用src/main/resources處的文件。

E.g.生產配置(使用的是Postgres和DDL-自動驗證,讓您的數據)放在src/main/resources

spring: 
    datasource: 
    url: jdbc:postgresql://localhost/postgres 
    username: postgres 
    password: postgres 
    driver-class-name: org.postgresql.Driver 
    jpa: 
    database-platform: org.hibernate.dialect.PostgreSQLDialect 
    hibernate: 
     ddl-auto: validate 

而且測試配置(使用H2和DDL-自動創建滴)放置在src/test/resources

spring: 
    datasource: 
    url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE 
    username: sa 
    password: 
    driver-class-name: org.h2.Driver 
    jpa: 
    database-platform: org.hibernate.dialect.H2Dialect 
    hibernate: 
     ddl-auto: create-drop 
相關問題