摘要:我們還是會(huì)以測(cè)試關(guān)系型數(shù)據(jù)庫(kù)里的來(lái)做集成測(cè)試代碼在這里。這個(gè)很有用,如果集成測(cè)試失敗,那么你還可以連接到數(shù)據(jù)庫(kù)查看情況。
原文地址
在測(cè)試關(guān)系型數(shù)據(jù)庫(kù)一篇里我們使用的是H2數(shù)據(jù)庫(kù),這是為了讓你免去你去安裝/配置一個(gè)數(shù)據(jù)庫(kù)的工作,能夠盡快的了解到集成測(cè)試的過(guò)程。
在文章里也說(shuō)了:
在真實(shí)的開(kāi)發(fā)環(huán)境中,集成測(cè)試用數(shù)據(jù)庫(kù)應(yīng)該和最終的生產(chǎn)數(shù)據(jù)庫(kù)保持一致
那么很容易就能想到兩種解決方案:
開(kāi)發(fā)團(tuán)隊(duì)使用共用同一個(gè)數(shù)據(jù)庫(kù)。這樣做的問(wèn)題在于:當(dāng)有多個(gè)集成測(cè)試同時(shí)在跑時(shí),會(huì)產(chǎn)生錯(cuò)誤的測(cè)試結(jié)果。
每個(gè)人使用自己的數(shù)據(jù)庫(kù)。這樣做的問(wèn)題在于讓開(kāi)發(fā)人員維護(hù)MySQL數(shù)據(jù)庫(kù)挺麻煩的。
那么做到能否這樣呢?
測(cè)試啟動(dòng)前,創(chuàng)建一個(gè)MySQL數(shù)據(jù)庫(kù)
測(cè)試過(guò)程中連接到這個(gè)數(shù)據(jù)庫(kù)
測(cè)試結(jié)束后,刪除這個(gè)MySQL數(shù)據(jù)庫(kù)
So, Docker comes to the rescue。
我們還是會(huì)以測(cè)試關(guān)系型數(shù)據(jù)庫(kù)里的FooRepositoryImpl來(lái)做集成測(cè)試(代碼在這里)。下面來(lái)講解具體步驟:
安裝Docker請(qǐng)查閱官方文檔。并且掌握Docker的基本概念。
配置fabric8 docker-maven-pluginfarbic8 docker-maven-plugin顧名思義就是一個(gè)能夠使用docker的maven plugin。它主要功能有二:
創(chuàng)建Docker image
啟動(dòng)Docker container
我們這里使用啟動(dòng)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
執(zhí)行org.apache.maven.plugins maven-failsafe-plugin integration-test integration-test verify verify jdbc:mysql://localhost:${docker-mysql.port}/test foo bar
三種常見(jiàn)用法:
mvn clean integration-test,會(huì)啟動(dòng)docker container、運(yùn)行集成測(cè)試。這個(gè)很有用,如果集成測(cè)試失敗,那么你還可以連接到MySQL數(shù)據(jù)庫(kù)查看情況。
mvn clean verify,會(huì)執(zhí)行mvn integration-test、刪除docker container。
mvn clean install,會(huì)執(zhí)mvn verify,并將包安裝到本地maven 倉(cāng)庫(kù)。
下面是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在集成測(cè)試前后start和stop容器的相關(guān)日志,且測(cè)試成功。
如何找到MySQL的端口開(kāi)在哪一個(gè)呢?運(yùn)行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
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27649.html
摘要:地址提供了對(duì)的支持,能夠讓我們很方便對(duì)關(guān)系型數(shù)據(jù)庫(kù)做集成測(cè)試。如果想要在打包的時(shí)候跳過(guò)集成測(cè)試,只需要。例子使用因?yàn)槭褂昧藖?lái)做集成測(cè)試,得益于其機(jī)制,不需要自己構(gòu)建和的。 Github地址 Spring Test Framework提供了對(duì)JDBC的支持,能夠讓我們很方便對(duì)關(guān)系型數(shù)據(jù)庫(kù)做集成測(cè)試。 同時(shí)Spring Boot提供了和Flyway的集成支持,能夠方便的管理開(kāi)發(fā)過(guò)程中產(chǎn)生...
摘要:地址前面一個(gè)部分講解了如何使用工具來(lái)測(cè)試項(xiàng)目,現(xiàn)在我們講解如何使用工具來(lái)測(cè)試項(xiàng)目。所以我們可以利用這個(gè)特性來(lái)進(jìn)一步簡(jiǎn)化測(cè)試代碼。因?yàn)橹挥羞@樣才能夠在測(cè)試環(huán)境下發(fā)現(xiàn)生產(chǎn)環(huán)境的問(wèn)題,也避免出現(xiàn)一些因?yàn)榕渲貌煌瑢?dǎo)致的奇怪問(wèn)題。 Github地址 前面一個(gè)部分講解了如何使用Spring Testing工具來(lái)測(cè)試Spring項(xiàng)目,現(xiàn)在我們講解如何使用Spring Boot Testing工具來(lái)測(cè)...
摘要:例子使用源代碼我們先給了一個(gè)的實(shí)現(xiàn)然后又規(guī)定了方法的返回值。源代碼也就是說(shuō),得益于,我們能夠很方便地對(duì)依賴關(guān)系中任意層級(jí)的任意做。 Github地址 Mock測(cè)試技術(shù)能夠避免你為了測(cè)試一個(gè)方法,卻需要自行構(gòu)建整個(gè)依賴關(guān)系的工作,并且能夠讓你專注于當(dāng)前被測(cè)試對(duì)象的邏輯,而不是其依賴的其他對(duì)象的邏輯。 舉例來(lái)說(shuō),比如你需要測(cè)試Foo.methodA,而這個(gè)方法依賴了Bar.methodB,...
摘要:地址在使用工具中提到在測(cè)試代碼之間盡量做到配置共用。本章將列舉幾種共享測(cè)試配置的方法我們可以將測(cè)試配置放在一個(gè)里,然后在測(cè)試或中引用它。也可以利用的及自定義機(jī)制,提供自己的用在測(cè)試配置上。 Github地址 在使用Spring Boot Testing工具中提到: 在測(cè)試代碼之間盡量做到配置共用。...能夠有效利用Spring TestContext Framework的緩存機(jī)制,Ap...
摘要:地址提供了,能夠很方便的來(lái)測(cè)試。同時(shí)也提供了更進(jìn)一步簡(jiǎn)化了測(cè)試需要的配置工作。本章節(jié)將分別舉例說(shuō)明在不使用和使用下如何對(duì)進(jìn)行測(cè)試。例子測(cè)試的關(guān)鍵是使用對(duì)象,利用它我們能夠在不需啟動(dòng)容器的情況下測(cè)試的行為。 Github地址 Spring Testing Framework提供了Spring MVC Test Framework,能夠很方便的來(lái)測(cè)試Controller。同時(shí)Spring...
閱讀 1829·2023-04-26 00:59
閱讀 3130·2021-11-15 18:10
閱讀 3072·2021-09-22 16:02
閱讀 766·2021-09-02 15:15
閱讀 3716·2019-08-30 15:56
閱讀 1917·2019-08-30 15:54
閱讀 2858·2019-08-29 16:31
閱讀 2035·2019-08-29 16:10