摘要:創(chuàng)建帳號(hào)提供的是持續(xù)集成服務(wù),簡(jiǎn)稱(chēng)。在這里引入的原因是我們的項(xiàng)目需要使用服務(wù)進(jìn)行持續(xù)集成和測(cè)試,當(dāng)然你也可以替換成別的單元測(cè)試工具。創(chuàng)建單元測(cè)試用例是單元測(cè)試類(lèi)庫(kù)家族中的一員,使用的一個(gè)主要目的是為我們的模塊創(chuàng)建單元測(cè)試用例。
本文首發(fā)于 Travis CI 持續(xù)集成服務(wù)構(gòu)建 Composer 類(lèi)庫(kù)簡(jiǎn)明教程,轉(zhuǎn)載請(qǐng)注明出處!
在項(xiàng)目開(kāi)發(fā)過(guò)程中,編碼工作只是軟件開(kāi)發(fā)整個(gè)過(guò)程中的一小部分環(huán)節(jié),更多的我們需要去構(gòu)建和測(cè)試我們的項(xiàng)目,以確保項(xiàng)目的健壯和穩(wěn)定性。
這篇文章將帶領(lǐng)大家學(xué)習(xí)如何使用 Travis CI 持續(xù)集成服務(wù)和 Composer 中國(guó) 包管理工具,來(lái)構(gòu)建一個(gè)持續(xù)集成的 PHP 類(lèi)庫(kù)。
前期準(zhǔn)備進(jìn)入正題之前,需要大家對(duì)以下幾個(gè)工具已經(jīng)有了初步的了解和使用經(jīng)驗(yàn):
Git: Git 是分布式版本控制系統(tǒng);
Composer:Composer 是 PHP 項(xiàng)目的依賴(lài)管理工具,用于管理項(xiàng)目中的 packagies 和 libraries;
GitHub:是一個(gè)用于使用 Git 版本控制系統(tǒng)項(xiàng)目的共享虛擬主機(jī)服務(wù),可以免費(fèi)托管公開(kāi)的源代碼倉(cāng)庫(kù)。
Packagist:主要提供 Composer 包發(fā)布和索引,默認(rèn) Composer 從 Packagist 獲取資源。
如果沒(méi)有的話(huà),最好還是先了解一下如何使用它們,下面讓我們簡(jiǎn)單介紹一下創(chuàng)建相關(guān)服務(wù)賬號(hào)的方法。
創(chuàng)建 Github 帳號(hào)GitHub 是一個(gè)用于使用 Git 版本控制系統(tǒng)項(xiàng)目的共享虛擬主機(jī)服務(wù),可以免費(fèi)托管公開(kāi)的源代碼倉(cāng)庫(kù)。
本教程的基礎(chǔ)就是基于 Git 和 GitHub 服務(wù),所以需要我們創(chuàng)建 GitHub 帳號(hào),并且 GitHub 官方提供 Packagist、Travis CI 的鉤子服務(wù)。
當(dāng)我們將本地的項(xiàng)目推送(push)到 Github 時(shí),Packagist 和 TravisCI 服務(wù)會(huì)觸發(fā)相關(guān)的鉤子服務(wù),去獲取最新的代碼。
如果沒(méi)有賬號(hào)的話(huà)趕緊去 注冊(cè) GitHub 帳號(hào) 吧!
創(chuàng)建 Packagist 帳號(hào)Packagist 是 Composer 默認(rèn)的包管理服務(wù)倉(cāng)庫(kù),我們使用 Composer 安裝(install)或引入(require)一個(gè)依賴(lài)包時(shí),默認(rèn)是從這里拉取依賴(lài)包的代碼。
所以,開(kāi)發(fā) Composer 類(lèi)庫(kù),需要使用我們的 Github 帳號(hào) 授權(quán) 并登錄 Packagist 網(wǎng)站。
創(chuàng)建 TravisCI 帳號(hào)Travis CI 提供的是持續(xù)集成服務(wù)(Continuous Integration,簡(jiǎn)稱(chēng) CI)。它綁定 Github 上面的項(xiàng)目,只要有新的代碼,就會(huì)自動(dòng)抓取,然后提供一個(gè)運(yùn)行環(huán)境,執(zhí)行測(cè)試,完成自動(dòng)化構(gòu)建,它還能將項(xiàng)目部署到我們的應(yīng)用服務(wù)器。這個(gè)教程主要講解使用這個(gè)服務(wù)的測(cè)試和自動(dòng)化構(gòu)建功能。
在開(kāi)始前讓我們先完成以下準(zhǔn)備工作:
首先,訪(fǎng)問(wèn)官方網(wǎng)站 Travis CI 使用 Github 授權(quán)登錄。
然后,當(dāng)授權(quán)登錄成功后,點(diǎn)擊右上角用戶(hù)頭像,這樣 Travis CI 會(huì)獲取到 Github 上你所有的版本庫(kù)信息。
最后,選擇你需要使用 TravisCI 服務(wù)幫你執(zhí)行測(cè)試和構(gòu)建的倉(cāng)庫(kù),點(diǎn)擊開(kāi)啟按鈕。開(kāi)啟成功后,任何 GitHub 提交代碼操作,都會(huì)觸發(fā) TravisCI 的鉤子服務(wù),然后執(zhí)行測(cè)試和構(gòu)建處理。
在完成以上帳號(hào)注冊(cè)流程后,我們就可以進(jìn)入到今天的正題,使用「使用 Travis CI 持續(xù)集成服務(wù)構(gòu)建 Composer 類(lèi)庫(kù)」。
創(chuàng)建新的 Composer 類(lèi)庫(kù)完成帳號(hào)創(chuàng)建及授權(quán)相關(guān)準(zhǔn)備工作后,現(xiàn)在讓我們就可以開(kāi)始創(chuàng)建自己的 Composer 類(lèi)庫(kù)了。
在 GitHub 創(chuàng)建項(xiàng)目倉(cāng)庫(kù)第一步需要到 GitHub 網(wǎng)站點(diǎn)擊站點(diǎn)右上角加號(hào)(?)創(chuàng)建一個(gè)新的項(xiàng)目倉(cāng)庫(kù),這里我創(chuàng)建了一個(gè)名為 travis-composer-tutorial。
默認(rèn)的 GitHub 會(huì)給我們創(chuàng)建一個(gè)空的項(xiàng)目目錄,當(dāng)然如果在創(chuàng)建時(shí)你選擇了需要?jiǎng)?chuàng)建 .gitignore、 開(kāi)源協(xié)議和 readme 文件時(shí),Github 還會(huì)給我們同時(shí)創(chuàng)建這些說(shuō)明及配置文件。
將 GitHub 倉(cāng)庫(kù)克隆到本地緊接著,進(jìn)入到我們的本地的工作目錄下,執(zhí)行 git clone 命令將 GitHub 中的項(xiàng)目克隆到本地:
cd your_workspace_directory git clone https://github.com/huliuqing/travis-composer-tutorial.git
請(qǐng)講自己的工作目錄及版本庫(kù)的 URL 地址替換掉。
初始化 Composer 項(xiàng)目初始化的目的是為我們新建的 travis-composer-tutorial 項(xiàng)目創(chuàng)建一個(gè) composer.json 元數(shù)據(jù)文件。創(chuàng)建這個(gè) JSON 配置文件有兩種方式:
手動(dòng)創(chuàng)建這個(gè) composer.json 文件,文件格式可以參考 庫(kù) 文檔;
通過(guò) composer init 命令行工具,采用交互式命令創(chuàng)建。
// 在 travis-composer-tutorial 項(xiàng)目根目錄執(zhí)行下面的命令 cd travis-composer-tutorial composer init
引導(dǎo)初始化時(shí)需要我們創(chuàng)建以下幾個(gè)初始配置選項(xiàng):
Package name: 包的名稱(chēng),我的是 phpzendo/travis-composer-tutorial;
Description []: 包的描述;
Author: 包的作者;
Package Type (e.g. library, project, metapackage, composer-plugin) []: 你開(kāi)發(fā)的類(lèi)庫(kù)類(lèi)型;
Minimum Stability: minimum-stability 字段的值;
License: 采用的 開(kāi)源協(xié)議;
require: 需要依賴(lài)的其它包,必須要有一個(gè)版本約束。并且應(yīng)該遵循 foo/bar:1.0.0 這樣的格式。
下面是我初始化 Composer 項(xiàng)目的交互截圖,有一點(diǎn)需要說(shuō)明由于當(dāng)時(shí)網(wǎng)絡(luò)原因并沒(méi)有在初始化時(shí)添加依賴(lài)的其它包,后續(xù)我們可以使用 composer require 引入 PHPUnit 依賴(lài):
通過(guò) composer require 命令引入 PHPUnit 單元測(cè)試測(cè)試工具創(chuàng)建依賴(lài)。
composer require phpunit/phpunit
在這里引入 PHPUnit 的原因是我們的項(xiàng)目需要使用 Travis CI 服務(wù)進(jìn)行持續(xù)集成和測(cè)試,當(dāng)然你也可以替換成別的單元測(cè)試工具。
到這里,基本上我們就完成了一個(gè)創(chuàng)建初始 Composer 類(lèi)庫(kù)的功能。接下來(lái),我們將進(jìn)入到項(xiàng)目的編碼階段。
創(chuàng)建源目錄完成基本的注冊(cè)和初始化工作后,才是進(jìn)行項(xiàng)目編碼階段,在項(xiàng)目根目錄下創(chuàng)建 src 文件夾。
項(xiàng)目的所有源碼都會(huì)放置到 src 目錄下,并采用 PSR4 自動(dòng)加載規(guī)范來(lái)定義文件結(jié)構(gòu)。
PSR 標(biāo)準(zhǔn)規(guī)范PSR 是 PHP Standard Recommendations 的簡(jiǎn)寫(xiě),由 PHP FIG 組織制定的 PHP 規(guī)范,是 PHP 開(kāi)發(fā)的實(shí)踐標(biāo)準(zhǔn)。
這里我們需要使用 PSR4 規(guī)范是最新的「自動(dòng)加載」規(guī)范,它的功能是讓 Composer 能夠正確查找并加載我們項(xiàng)目的源文件。
使用 PSR4 規(guī)范定義文件的目錄結(jié)構(gòu)遵循以下原則:
( )*
更多有關(guān) PSR4 規(guī)范說(shuō)明及使用可以查看 說(shuō)明。
編寫(xiě)模塊代碼現(xiàn)在讓我們來(lái)編寫(xiě)項(xiàng)目的首個(gè)模塊吧。
作為教程,這里我們假設(shè)需要?jiǎng)?chuàng)建一個(gè) Dumper 類(lèi)用于替代 php 內(nèi)置的 var_dump 輸出功能。
到 src 目錄下創(chuàng)建子目錄 Dumper,同時(shí)創(chuàng)建 Dumper/Dumper.php 類(lèi)文件。
* @method mixed dump($expression, $title = null) * @license MIT */ class Dumper { /** * 打印變量的相關(guān)信息 * * @param mixed $expression * @param string|null $title * @return void */ public function dump($expression, $title = null) { echo ($title ?: "調(diào)試:") . "配置 Composer 自動(dòng)加載元數(shù)據(jù)"; var_dump($expression); echo ""; } }
編寫(xiě)完成我們的模塊后,需要將項(xiàng)目目錄配置到 composer.json 文件的 autoload 元數(shù)據(jù)中。
autoload 配置功能是定義 composer 自動(dòng)加載與項(xiàng)目模塊的映射關(guān)系,定義后 composer 才能正確查找項(xiàng)目模塊自動(dòng)引入類(lèi)文件。
有關(guān) autoload 使用說(shuō)明可直接查看文檔。
確認(rèn)項(xiàng)目的命名空間。
我們模塊的命名空間為 PhpZendoDumperDumper。
當(dāng)前命名空間前綴為 PhpZendo 指向的是 src 目錄,意味著 composer 自動(dòng)加載會(huì)查找 src/Dumper/Dumper.php 文件并引入(require)。
將命名空間及文件引入關(guān)系添加到 autoload 配置
打開(kāi) *composer.json 文件并添加如下配置:
"autoload": { "psr-4": { "PhpZendo": "src/" } }
更新 composer 依賴(lài)。
執(zhí)行如下命令更新自動(dòng)加載依賴(lài)關(guān)系:
composer dump-autoload將項(xiàng)目推送到 GtiHub 并創(chuàng)建 Packagist 鉤子服務(wù)
到這里我們基本上已經(jīng)完成了開(kāi)發(fā)一個(gè)簡(jiǎn)單的 composer 類(lèi)庫(kù),現(xiàn)在我們可以將項(xiàng)目推送到 GitHub。
但是在推送之前,我們需要到 Packagist 官網(wǎng)配置 travis-composer-tutorial 項(xiàng)目的鉤子服務(wù)。
將項(xiàng)目提交到 GitHub 遠(yuǎn)程倉(cāng)庫(kù)。
首先,確定是否有 .gitignore 文件,并確保 vendor 等目錄不會(huì)添加到版本控制中。
我的 .gitignore 文件實(shí)在創(chuàng)建 GitHub 時(shí)自動(dòng)創(chuàng)建的:
composer.phar /vendor/ # Commit your application"s lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control # You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file # composer.lock
推送項(xiàng)目到 GitHub。
git add * git commit -m "Create travis and composer tutorial." git push origin master
進(jìn)入 Packagist 官網(wǎng),點(diǎn)擊網(wǎng)頁(yè)右上角 Submit 按鈕添加 GitHub 代碼倉(cāng)庫(kù)地址。
進(jìn)入頁(yè)面后將 https://github.com/huliuqing/... 配置到 Submit package 表單,提交即可。
添加完成后我們的 GitHub 項(xiàng)目即添加到了 Packagist。
不過(guò)此時(shí),我們的項(xiàng)目推送還不會(huì)自動(dòng)在 Packagist 中完成任何代碼推送的更新操作,而需要我們手動(dòng)的去執(zhí)行 update 操作才行,原因是當(dāng)前還沒(méi)有配置 GitHub 的鉤子服務(wù)。
如何配置鉤子服務(wù),可以到 說(shuō)明文檔 去深入了解一下。
小結(jié)在這一小節(jié)我們深入了解了如何創(chuàng)建 Github 版本庫(kù),使用 Composer 命令行工具初始化本地類(lèi)庫(kù)元數(shù)據(jù)信息;并且學(xué)習(xí)了如何定義項(xiàng)目自動(dòng)加載配置和將 GitHub 版本庫(kù)關(guān)聯(lián)到 Packagist 站點(diǎn)。
下一節(jié)我們將講解本文另外一個(gè)主題,使用 Travis CI 服務(wù)構(gòu)建持續(xù)構(gòu)建和測(cè)試項(xiàng)目。
支持 Travis CI 服務(wù),創(chuàng)建可持續(xù)構(gòu)建項(xiàng)目Travis CI 提供一個(gè)運(yùn)行環(huán)境,然后執(zhí)行測(cè)試,完成構(gòu)建,甚至還能將我們的項(xiàng)目部署到應(yīng)用服務(wù)器。
要知道我們?cè)诰帉?xiě)軟件時(shí),編碼僅僅是軟件開(kāi)發(fā)過(guò)程中一小部分工作內(nèi)容;一個(gè)可靠的項(xiàng)目還需要對(duì)其進(jìn)行測(cè)試,使用 Travis CI 這類(lèi)持續(xù)構(gòu)建服務(wù),可以簡(jiǎn)化測(cè)試工作并保證項(xiàng)目的質(zhì)量。
這一節(jié)將學(xué)習(xí)持續(xù)構(gòu)建相關(guān)知識(shí)。
創(chuàng)建 PHPUnit 單元測(cè)試用例PHPUnit 是 xUnit 單元測(cè)試類(lèi)庫(kù)家族中的一員,使用 PHPUnit 的一個(gè)主要目的是為我們的模塊創(chuàng)建單元測(cè)試用例。
在項(xiàng)目中,究竟何時(shí)才需要使用單元測(cè)試技術(shù)呢?
一個(gè)很簡(jiǎn)單的判斷標(biāo)準(zhǔn)就是,當(dāng)你想在項(xiàng)目中使用類(lèi)似 var_dump 函數(shù)打印輸出內(nèi)容時(shí),一個(gè)更好的方式就是將輸出替換成單元測(cè)試。
創(chuàng)建 tests 目錄讓我們?cè)陧?xiàng)目的根目錄下創(chuàng)建 tests 文件夾,之后我們所有的測(cè)試用例都會(huì)放置到這個(gè)目錄中。
編寫(xiě) PHPUnit 測(cè)試接下來(lái)需要編寫(xiě) PHPUnit 測(cè)試用例,如何編寫(xiě)一個(gè)簡(jiǎn)單的測(cè)試用里遵循以下規(guī)則:
針對(duì)類(lèi) Class 的測(cè)試寫(xiě)在類(lèi) ClassTest中;
ClassTest(通常)繼承自 PHPUnitFrameworkTestCase;
測(cè)試都是命名為 test* 的公用方法。
更詳細(xì)內(nèi)容可以查看 PHPUnit 中文網(wǎng) 文檔說(shuō)明。
所以這里我們創(chuàng)建一個(gè) DumperTest.php 單元測(cè)試用例,并將這個(gè)測(cè)試用例創(chuàng)建在 tests/unit/DumperTest.php 路徑下:
*/ class DumperTest extends TestCase { /** * 測(cè)試 Dumper 類(lèi)實(shí)例化 * * @return void */ public function testDumper() { $dumper = new PhpZendoDumperDumper(); $this->assertInstanceOf(PhpZendoDumperDumper::class, $dumper); } }
這個(gè)測(cè)試用例主要用于檢測(cè)是否成功創(chuàng)建 Dumper 類(lèi)。
執(zhí)行單個(gè)測(cè)試用例完成測(cè)試用例編碼工作后,我們需要驗(yàn)證測(cè)試是否通過(guò)。之前,我們的項(xiàng)目已經(jīng)引入了 phpunit 依賴(lài),所以這里我們可以通過(guò)下面的命令去執(zhí)行測(cè)試腳本:
./vendor/bin/phpunit UnitTest ./tests/Unit/DumperTest.php
以下是執(zhí)行結(jié)果:
有關(guān) PHPUnit 命令行工具可以查看 命令行測(cè)試執(zhí)行器 相關(guān)文檔。
雖然,我們現(xiàn)在能夠成功執(zhí)行測(cè)試腳本,但是如果我們的測(cè)試用例有多個(gè)的話(huà),這樣一個(gè)一個(gè)寫(xiě)出每個(gè)測(cè)試文件似乎有點(diǎn)傻乎乎。
有沒(méi)有好的解決方案可以將所有 tests/unit 目錄下的測(cè)試文件都執(zhí)行測(cè)試呢?
接下來(lái)會(huì)交大家如何編寫(xiě) PHPUnit 測(cè)試 XML 配置文件。
編寫(xiě) PHPUnit 測(cè)試 XML 配置文件很多時(shí)候我們的測(cè)試腳本并非只有一個(gè)測(cè)試文件,而是會(huì)有許多的測(cè)試用例,這種情況下需要使用 XML 配置文件 來(lái)幫助我們的 PHPunit 找到所有這些測(cè)試文件路徑。
下面是我編寫(xiě)的 phpunit.xml 配置文件信息:
tests/Unit
其中我們需要重點(diǎn)關(guān)注以下幾個(gè)屬性功能:
配置文件包含一個(gè)
phpunit 包含一個(gè)或多個(gè)
隨后,我們可以通過(guò)下面的 phpunit 命令行工具從 XML 文件中讀取配置并執(zhí)行測(cè)試:
./vendor/bin/phpunit -c phpunit.xml配置 Travis CI 服務(wù)
到這里說(shuō)明我們的項(xiàng)目進(jìn)行的非常順利,接下來(lái)就是需要到 Travis CI 配置 GitHub 項(xiàng)目的鉤子服務(wù),并執(zhí)行自動(dòng)化測(cè)試。
Travis CI 官網(wǎng)開(kāi)啟項(xiàng)目的鉤子服務(wù)如果測(cè)試一切順利的話(huà)我們就可以進(jìn)行下一步,到 Travis CI 官網(wǎng)去開(kāi)啟 travis-composer-tutorial (這里請(qǐng)開(kāi)啟自己的項(xiàng)目)項(xiàng)目的鉤子服務(wù),如何開(kāi)啟可以到「創(chuàng)建 TravisCI 帳號(hào)」以及查看。
配置完成后可以看到看到 Travis CI 網(wǎng)站會(huì)獲取到我們的項(xiàng)目
編寫(xiě) YAML Travis CI 測(cè)試配置Travis 服務(wù)提供多種編程語(yǔ)言的自動(dòng)化測(cè)試支持,所有這里我們需要編寫(xiě) PHP 語(yǔ)言的測(cè)試配置。
Travis CI 配置文件使用 YAML 語(yǔ)言編寫(xiě),配置文件名為 .travis.yml。有關(guān)配置的具體細(xì)節(jié)可以到 Building a PHP project 去了解。
下面介紹我們的教程需要完成的一些配置信息:
language: php php: - 7.1 - 7.2 before_script: - composer install script: ./vendor/bin/phpunit -c phpunit.xml
language 和 php: language 用于配置項(xiàng)目采用的編程語(yǔ)言; php 用于指出當(dāng)項(xiàng)目使用 PHP 開(kāi)發(fā)時(shí)選擇使用的 PHP 版本,這里我們使用 7.1 和 7.2 版本;
before_script: 用于在執(zhí)行 script 腳本前,需要執(zhí)行相關(guān)操作,我們這里去執(zhí)行 composer install 操作安裝相關(guān)依賴(lài);
script:用于配置我們需要執(zhí)行的腳本,Travis CI 默認(rèn)會(huì)使用 PHPUnit 作為單元測(cè)試工具,并運(yùn)行 ./vendor/bin/phpunit -c phpunit.xml 進(jìn)行單元測(cè)試。
在我們的配置中,可以將 script 配置簡(jiǎn)寫(xiě)成:./vendor/bin/phpunit。
提交代碼到 GitHubgit add * git commit -m "Support travis ci and phpunit test." git push origin master
推送到 GitHub 會(huì)觸發(fā) Travis CI 的鉤子服務(wù),并在 Travis CI 執(zhí)行自動(dòng)化測(cè)試和構(gòu)建服務(wù)。
下面是 Travis CI 自動(dòng)構(gòu)建結(jié)果:
總結(jié)以上就是今天的主要內(nèi)容,希望對(duì)大家有所幫助。
參考資料持續(xù)集成服務(wù) Travis CI 教程
Composer 入門(mén)
使用 GitHub、Composer、Packagist 管理公開(kāi)的 PHP 包(Step By Step)
Git 教程
TravisCI 文檔
如何簡(jiǎn)單入門(mén)使用 Travis-CI 持續(xù)集成
學(xué)習(xí)開(kāi)發(fā)自己的 Composer 包,并使用 GitHub 實(shí)時(shí)更新到 Packagist
YAML 語(yǔ)言教程
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28794.html
摘要:?jiǎn)卧獪y(cè)試中,代碼覆蓋率經(jīng)常被用來(lái)衡量測(cè)試好壞的指標(biāo)。執(zhí)行的結(jié)果和導(dǎo)出的結(jié)果都可以在的下看到接下來(lái)就是把這些文件到上,就會(huì)自動(dòng)構(gòu)建,然后開(kāi)始單元測(cè)試,并把測(cè)試結(jié)果中的代碼覆蓋率發(fā)送到。 本文以PHP項(xiàng)目作為例子所需要擁有(準(zhǔn)備)的: Github賬號(hào) 一個(gè)項(xiàng)目 看著篇幅挺大的,難免有什么遺漏,如果文中有錯(cuò)誤的地方,還請(qǐng)各位斧正!謝謝。因?yàn)楸緛?lái)篇幅就大,所以就沒(méi)配圖了,如果有很多人反...
摘要:自動(dòng)部署到遠(yuǎn)程服務(wù)器現(xiàn)在已經(jīng)可以自動(dòng)構(gòu)建了,那么接下來(lái)的一步就是部署到遠(yuǎn)程服務(wù)器。最后,貼出我自己的,里面有關(guān)涉及個(gè)人隱私的部分我會(huì)注釋并說(shuō)明請(qǐng)?zhí)鎿Q成自己的登錄和登錄用戶(hù)請(qǐng)?zhí)鎿Q成自己的服務(wù)器本文參考鏈接使用進(jìn)行持續(xù)集成自動(dòng)化部署博客 Travis CI 是在軟件開(kāi)發(fā)領(lǐng)域中的一個(gè)在線(xiàn)的,分布式的持續(xù)集成服務(wù),用來(lái)構(gòu)建及測(cè)試在GitHub托管的代碼。 showImg(https://seg...
摘要:?jiǎn)卧獪y(cè)試的好處是給開(kāi)發(fā)人員的,并不是給機(jī)器的。對(duì)于查詢(xún)構(gòu)造器這個(gè)項(xiàng)目,我們可以讓其在遠(yuǎn)程運(yùn)行環(huán)境安裝相關(guān)數(shù)據(jù)庫(kù)軟件,執(zhí)行數(shù)據(jù)表建立,數(shù)據(jù)導(dǎo)入,執(zhí)行單元測(cè)試等操作。查詢(xún)構(gòu)造器的完整代碼查詢(xún)構(gòu)造器的單元測(cè)試完整代碼。 debug 模式 對(duì)查詢(xún)構(gòu)造器進(jìn)行調(diào)試并不難,從其構(gòu)造 SQL -> 數(shù)據(jù)綁定 -> SQL 執(zhí)行的過(guò)程中就能發(fā)現(xiàn),要方便調(diào)試,只要可以觀察以下信息: 構(gòu)造的 SQL 綁定...
摘要:來(lái)這里看看的工程師如何進(jìn)行持續(xù)集成與持續(xù)部署。主要介紹了豆瓣移動(dòng)持續(xù)集成和測(cè)試相關(guān)實(shí)踐,用工具化自動(dòng)化社會(huì)化測(cè)試來(lái)解決遇到的問(wèn)題,將打包發(fā)布環(huán)節(jié)自動(dòng)化。這期的持續(xù)集成實(shí)踐分享就到這里。 我們??吹皆S多團(tuán)隊(duì)和開(kāi)發(fā)者分享他們的持續(xù)集成實(shí)踐經(jīng)驗(yàn),本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項(xiàng)目搭建持續(xù)集成的實(shí)踐,以及一些國(guó)內(nèi)外公司的內(nèi)部持續(xù)集成...
閱讀 4169·2021-09-29 09:34
閱讀 3866·2021-09-27 13:34
閱讀 654·2021-09-24 09:47
閱讀 3100·2019-08-30 15:53
閱讀 1883·2019-08-26 13:54
閱讀 2134·2019-08-26 13:43
閱讀 613·2019-08-23 14:47
閱讀 1800·2019-08-23 14:28