摘要:我們還是會以測試關系型數據庫里的來做集成測試代碼在這里。這個很有用,如果集成測試失敗,那么你還可以連接到數據庫查看情況。
原文地址
在測試關系型數據庫一篇里我們使用的是H2數據庫,這是為了讓你免去你去安裝/配置一個數據庫的工作,能夠盡快的了解到集成測試的過程。
在文章里也說了:
在真實的開發環境中,集成測試用數據庫應該和最終的生產數據庫保持一致
那么很容易就能想到兩種解決方案:
開發團隊使用共用同一個數據庫。這樣做的問題在于:當有多個集成測試同時在跑時,會產生錯誤的測試結果。
每個人使用自己的數據庫。這樣做的問題在于讓開發人員維護MySQL數據庫挺麻煩的。
那么做到能否這樣呢?
測試啟動前,創建一個MySQL數據庫
測試過程中連接到這個數據庫
測試結束后,刪除這個MySQL數據庫
So, Docker comes to the rescue。
我們還是會以測試關系型數據庫里的FooRepositoryImpl來做集成測試(代碼在這里)。下面來講解具體步驟:
安裝Docker請查閱官方文檔。并且掌握Docker的基本概念。
配置fabric8 docker-maven-pluginfarbic8 docker-maven-plugin顧名思義就是一個能夠使用docker的maven plugin。它主要功能有二:
創建Docker image
啟動Docker container
我們這里使用啟動Docker container的功能。
大致配置如下
配置maven-failsafe-pluginio.fabric8 docker-maven-plugin 0.28.0 mysql:8 docker-mysql.port:3306 123456 test foo bar MySQL init process done. Ready for start up. start pre-integration-test start stop post-integration-test stop
執行org.apache.maven.plugins maven-failsafe-plugin integration-test integration-test verify verify jdbc:mysql://localhost:${docker-mysql.port}/test foo bar
三種常見用法:
mvn clean integration-test,會啟動docker container、運行集成測試。這個很有用,如果集成測試失敗,那么你還可以連接到MySQL數據庫查看情況。
mvn clean verify,會執行mvn integration-test、刪除docker container。
mvn clean install,會執mvn verify,并將包安裝到本地maven 倉庫。
下面是mvn clean verify的日志:
... [INFO] --- docker-maven-plugin:0.28.0:start (start) @ spring-test-examples-rdbs-docker --- [INFO] DOCKER> [mysql:8]: Start container f683aadfe8ba [INFO] DOCKER> Pattern "MySQL init process done. Ready for start up." matched for container f683aadfe8ba [INFO] DOCKER> [mysql:8]: Waited on log out "MySQL init process done. Ready for start up." 13717 ms [INFO] [INFO] --- maven-failsafe-plugin:2.22.1:integration-test (integration-test) @ spring-test-examples-rdbs-docker --- [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- ... [INFO] [INFO] Results: [INFO] [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] [INFO] --- docker-maven-plugin:0.28.0:stop (stop) @ spring-test-examples-rdbs-docker --- [INFO] DOCKER> [mysql:8]: Stop and removed container f683aadfe8ba after 0 ms [INFO] [INFO] --- maven-failsafe-plugin:2.22.1:verify (verify) @ spring-test-examples-rdbs-docker --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
可以看到fabric8 dmp在集成測試前后start和stop容器的相關日志,且測試成功。
如何找到MySQL的端口開在哪一個呢?運行docker ps查看端口(注意下面的0.0.0.0:32798->3306/tcp):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1f4b51d7c75 mysql:8 ... ... Up 19... 33060/tcp, 0.0.0.0:32798->3306/tcp mysql-1參考文檔
Fabric8 dmp
Spring boot - Externalized Configuration
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/27649.html
摘要:地址提供了對的支持,能夠讓我們很方便對關系型數據庫做集成測試。如果想要在打包的時候跳過集成測試,只需要。例子使用因為使用了來做集成測試,得益于其機制,不需要自己構建和的。 Github地址 Spring Test Framework提供了對JDBC的支持,能夠讓我們很方便對關系型數據庫做集成測試。 同時Spring Boot提供了和Flyway的集成支持,能夠方便的管理開發過程中產生...
摘要:地址前面一個部分講解了如何使用工具來測試項目,現在我們講解如何使用工具來測試項目。所以我們可以利用這個特性來進一步簡化測試代碼。因為只有這樣才能夠在測試環境下發現生產環境的問題,也避免出現一些因為配置不同導致的奇怪問題。 Github地址 前面一個部分講解了如何使用Spring Testing工具來測試Spring項目,現在我們講解如何使用Spring Boot Testing工具來測...
摘要:例子使用源代碼我們先給了一個的實現然后又規定了方法的返回值。源代碼也就是說,得益于,我們能夠很方便地對依賴關系中任意層級的任意做。 Github地址 Mock測試技術能夠避免你為了測試一個方法,卻需要自行構建整個依賴關系的工作,并且能夠讓你專注于當前被測試對象的邏輯,而不是其依賴的其他對象的邏輯。 舉例來說,比如你需要測試Foo.methodA,而這個方法依賴了Bar.methodB,...
摘要:地址在使用工具中提到在測試代碼之間盡量做到配置共用。本章將列舉幾種共享測試配置的方法我們可以將測試配置放在一個里,然后在測試或中引用它。也可以利用的及自定義機制,提供自己的用在測試配置上。 Github地址 在使用Spring Boot Testing工具中提到: 在測試代碼之間盡量做到配置共用。...能夠有效利用Spring TestContext Framework的緩存機制,Ap...
摘要:地址提供了,能夠很方便的來測試。同時也提供了更進一步簡化了測試需要的配置工作。本章節將分別舉例說明在不使用和使用下如何對進行測試。例子測試的關鍵是使用對象,利用它我們能夠在不需啟動容器的情況下測試的行為。 Github地址 Spring Testing Framework提供了Spring MVC Test Framework,能夠很方便的來測試Controller。同時Spring...
閱讀 1840·2023-04-26 00:59
閱讀 3136·2021-11-15 18:10
閱讀 3083·2021-09-22 16:02
閱讀 770·2021-09-02 15:15
閱讀 3722·2019-08-30 15:56
閱讀 1922·2019-08-30 15:54
閱讀 2864·2019-08-29 16:31
閱讀 2041·2019-08-29 16:10