H2 構建單元測試的本地記憶體資料庫

2021-08-05 18:58:05 字數 1595 閱讀 6617

dao層的單元測試不能依賴測試環境的資料庫以避免環境的影響,h2是乙個記憶體資料庫,支援標準sql,相當於把資料庫本地化,可以避免對測試環境的依賴,也可以提公升單測的速度

springboot與h2的整合由於springboot提供了h2的預設配置,如果使用是的springboot則不需要新增h2的配置。預設配置如下:

h2資料庫初始化

由於h2是記憶體資料庫,不能儲存表結構,在每次測試環境準備的時候都要先初始化好需要用到的表結構。

我們在在test/resources目錄下新建乙個schema.sql檔案,這個檔案將在初始化資料來源的時候被引用到。建表語句如下:

create

table

`user` (

`autoid` bigint(20) not

null auto_increment,

`userid` bigint(20) not

null comment '使用者id',

`username`

varchar(64) not

null comment '使用者姓名',

`age`

int(10) not

null comment '年齡',

`pointvalue`

int(11) not

null

default

'0' comment '積分',

`status`

smallint(6) not

null

default

'0' comment '記錄可用狀態',

`createtime` datetime not

null

default

current_timestamp comment '記錄建立日期',

`lastmodifytime` datetime not

null

default

current_timestamp comment '最後修改日期',

primary

key (`autoid`)

);

建表語句後面不能有engine=innodb default charset=utf8,不然將會報錯。

下面是初始化資料來源的**:

@bean

public datasource h2datasource()

h2的pom依賴

com.h2databasegroupid>

h2artifactid>

1.4.195version>

testscope>

dependency>

至此,h2的初始化完成,構建了乙個基於h2的本地記憶體資料庫,這樣我們就實現了單元測試與測試環境資料庫的解耦,零依賴。

構建有效的單元測試

以下內容翻譯自google官方文件 building effective unit tests 水平有限自己感覺很多內容翻譯並不到位,但找不到更好的表達方式,如果您覺著有更好的表達方式,幫助我改進!注意 單元測試不適合測試複雜的ui互動事件。如果想這麼做,你應該使用ui測試框架,這將會在 autom...

在Spring Boot使用H2記憶體資料庫

在spring boot使用h2記憶體資料庫 要想使用h2,我們需要新增如下配置 org.springframework.bootgroupid spring boot starter data jpaartifactid dependency com.h2databasegroupid h2art...

H2資料庫的應用

h2是乙個j a編寫的關係型資料庫,它可以被嵌入j a應用程式中使用,或者作為乙個單獨的資料庫伺服器執行。在啟動安裝程式前面,確保pc上已經存在jdk,安裝過程中配置預設就行,當然也可以自己選擇安裝路徑。我這裡選擇安裝到e盤,安裝後h2的目錄如下 在bin目錄下有乙個h2 2.1.210.jar的包...