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的包...