2017-04-03 146 views
0

我需要測試JPA與H2數據庫使用春季和Junit,我在網上找到很多方式,但我不知道最好的一個。用H2數據庫測試JPA的最佳方法是什麼?

非常感謝。

+0

爲什麼人們總是認爲有一種「最好」的方式?根據你的代碼和情況,爲什麼不嘗試一下,看看哪些最適合你? –

回答

0

嘗試爲您的Spring應用程序創建測試配置文件,並在該配置文件中創建H2數據源並注入相同的內容。如果您的項目是Spring Boot項目,那麼可以使用屬性文件(如application-dev.properties或application-test.properties)對數據源進行概要分析。否則,在不同的配置文件下創建不同的bean定義。默認情況下,Maven/Gradle使用profile = test運行測試。

因此當運行測試時,H2數據庫被拾取。內存數據庫中的H2會更好,因爲每次測試開始時它都可以丟棄/創建。

評論這裏如果你正在尋找任何特定的規格/措施來決定好的方法。

0

確實有兩種配置Spring/JPA測試套件的方法,並且很難找出最好的方法。只要它們覆蓋了下面提到的要點,你可以自由使用它們中的任何一個,只要嘗試一下,看看哪一個套件最適合你。

  • 確保管理JPA數據庫配置的配置是外部化的。您可以通過指定不同的彈簧配置文件或覆蓋Spring PropertyConfigurer來實現此目的。對於春季啓動項目爲您測試的基類可能類似於下面的代碼片段:


    @ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class, locations = "classpath:applicationContext-integrationtest.xml") 
    @ActiveProfiles("integrationtest") 
    @Ignore("An abstract base class for the tests") 
    public abstract class AbstractIntegrationTest extends AbstractTransactionalJUnit4SpringContextTests { 
    } 
  • 確保性能控制數據源配置在集成測試被覆蓋屬性文件。主DB具體性能如下:

    • 數據庫的用戶名(通常設置在數據源/連接池) - sa
    • 數據庫密碼(一般設置數據源/連接池) - ``
    • 數據庫連接URL(通常設置在數據源/連接池) - jdbc:h2:database/integrationtest
    • 數據庫JDBC驅動程序類(通常在數據源設置/連接池) - org.h2.Driver
    • 數據庫方言(通常在JPA EntityManagerFactory的提供商特異性設置IC配置) - org.hibernate.dialect.H2Dialect
相關問題