前面幾天講了幾種測試的方式,今天我們要轉換到比較實務面的技術,TestContainer,
容器(Container)是一種輕量級的虛擬化技術,它允許我們在單一主機上執行多個獨立的應用程式或服務,而這些應用程式之間互相隔離,不會互相干擾。容器是提供一種一致性、可移植性和高效能的方式來封裝和部署應用程式。
可以把它想成一個封閉的環境,擁有自己的世界。
顧名思義,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/