簡體   English   中英

使用Spring Boot 1.4.1和H2測試JPA

[英]Testing JPA with Spring Boot 1.4.1 and H2

我正在嘗試使用H2測試我的JPA代碼,我的生產數據庫是PostGres。

我運行測試時遇到的錯誤是:

Caused by: java.lang.ClassNotFoundException: org.h2.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)

我的pom.xml文件中有H2:

<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <scope>runtime</scope>
        </dependency>

不知道為什么它找不到驅動程序。

作為替代方案,我嘗試添加@DataJpaTest,這確實讓我得到了H2但是我沒有成功地覆蓋它的配置如何導致FlyWay在測試運行多次之后抱怨現有版本。

我還嘗試將以下內容放在application.yml(在test / resource中)與@DataJpaTest一起處理我的FlyWay問題,但是它被忽略了這個注釋或者沒有被加載:

hibernate:
      ddl-auto: create-drop

我想要:

  1. 弄清楚驅動程序未加載的原因
  2. 弄清楚如何調整@DataJpaTest創建的DataSource
  3. 找出配置測試數據源的更好方法

有小費嗎? 其他人如何配置生產是一種類型的數據庫並且測試因嵌入式數據而下​​降的情況?

事實證明我畢竟不使用1.4.1。 我還有1.4.0。 我更新到1.4.1並做了一個mvn clean包。 還刪除了org.hsqldb依賴項。 最后,我在src / main / resources中使用了application.yml,並將PostGres的依賴性移到了名為“cloud”的配置文件中。 我刪除了與H2有關的所有其他配置。 我還刪除了JUnit類上的所有注釋,除了start.spring.io首次生成測試類時給出的注釋。 之后所做的一切都在那之后起作用。 可能是我在我的配置中搞砸了什么,或者1.4.0中可能存在某種錯誤? 無論如何,我重新開始營業:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM