iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Kotlin

Kotlin魔法:Spring Boot 3的fp奇幻冒險系列 第 19

[城鎮] TestContainer 衝衝衝

  • 分享至 

  • xImage
  •  

前情提要

前面幾天講了幾種測試的方式,今天我們要轉換到比較實務面的技術,TestContainer,

Container簡介

容器(Container)是一種輕量級的虛擬化技術,它允許我們在單一主機上執行多個獨立的應用程式或服務,而這些應用程式之間互相隔離,不會互相干擾。容器是提供一種一致性、可移植性和高效能的方式來封裝和部署應用程式。

可以把它想成一個封閉的環境,擁有自己的世界。

TestContainer 是什麼?

顧名思義,TestContainer就是給測試專用的容器!為甚麼我們需要測試專用的呢?

假設我們今天要測試,我們可能會寫一個Mock DB,來假裝我們真的有塞資料進去DB裡面,但這只是假裝而已,比較好的做法當然是起一個真的DB來塞資料!
畢竟假的可能就會出錯,但拿真的DB成本又很高,我們總不能拿Production的DB來跑測試吧!或是我們也不能用開發的DB來跑測試吧!

想想跑一次測試我們的DB可能就塞了一堆髒髒的資料,這樣會造成我們開發上的困擾,因此我們又希望真的DB,又希望不會影響開發,那不就簡單了!

製造出跟真的一樣的DB,卻又把自己隔離起來,這就是TestContainer的作用。

好處

它就像是真的DB一樣,我們就可以大膽的做測試,跑的測試就像塞真的DB一樣,如果有錯,你塞真的DB也一樣會有錯,非常的方便,而且它會跑完測試就刪除Container,完全不留痕跡!

壞處

壞處就是真的起一個DB起來,會比平常跑測試還花久一點時間,但我覺得是值得的XD

總結

如果我們遇到需要DB的測試,建議都可以起一個TestContainer來做測試,真的就是讚XD

參考資料

https://java.testcontainers.org/quickstart/junit_5_quickstart/


上一篇
[城鎮] It is rule - Contract Test
下一篇
[小草原] Spring Boot的application.properties 讀取大解密
系列文
Kotlin魔法:Spring Boot 3的fp奇幻冒險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言