国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【持續(xù)集成你的項(xiàng)目】為你的項(xiàng)目創(chuàng)建自動(dòng)化測(cè)試和代碼覆蓋率測(cè)試

Jeff / 2541人閱讀

摘要:?jiǎn)卧獪y(cè)試中,代碼覆蓋率經(jīng)常被用來衡量測(cè)試好壞的指標(biāo)。執(zhí)行的結(jié)果和導(dǎo)出的結(jié)果都可以在的下看到接下來就是把這些文件到上,就會(huì)自動(dòng)構(gòu)建,然后開始單元測(cè)試,并把測(cè)試結(jié)果中的代碼覆蓋率發(fā)送到。

本文以PHP項(xiàng)目作為例子
所需要擁有(準(zhǔn)備)的:

Github賬號(hào)

一個(gè)項(xiàng)目

看著篇幅挺大的,難免有什么遺漏,如果文中有錯(cuò)誤的地方,還請(qǐng)各位斧正!謝謝。
因?yàn)楸緛砥痛螅跃蜎]配圖了,如果有很多人反饋看不懂或者失敗了,我再后期補(bǔ)下圖。謝謝!

Travis-CI

項(xiàng)目為保證項(xiàng)目始終處于健康穩(wěn)定的狀態(tài),我們需要一個(gè)可以持續(xù)的自動(dòng)的對(duì)貢獻(xiàn)的代碼進(jìn)行自動(dòng)化測(cè)試的服務(wù)。
Travis-CI就是在這樣的背景下于2011年開啟服務(wù),到現(xiàn)在為止已經(jīng)有超過300k個(gè)開源項(xiàng)目和235k的用戶在使用。

Travis-CI所做的工作就是自動(dòng)在虛擬機(jī)中運(yùn)行.travis.yml中設(shè)定的內(nèi)容進(jìn)行單元測(cè)試,生成并導(dǎo)出報(bào)告。

Composer

開源項(xiàng)目之間一般有著相互依賴的關(guān)系,比如項(xiàng)目A的一個(gè)組件依賴于另一個(gè)項(xiàng)目B。當(dāng)這種依賴關(guān)系多了之后就需要一個(gè)管理依賴的工具。

Composer就是PHP的一個(gè)依賴管理工具。它允許你申明項(xiàng)目所依賴的代碼庫,并且會(huì)在你的項(xiàng)目中安裝他們。Composer中文

Packagist

Packagist is the main Composer repository. It aggregates public PHP packages installable with Composer.

這個(gè)網(wǎng)站是主要的Composer倉庫,通過Composer發(fā)布的項(xiàng)目,所儲(chǔ)存的倉庫就是這個(gè)網(wǎng)站,這也是Composer安裝依賴的下載來源。可以使用Github賬號(hào)登錄

登錄之后可以提交自己的項(xiàng)目,不過需要項(xiàng)目中有composer.json文件,這在之后進(jìn)行介紹。

Coveralls

單元測(cè)試中,代碼覆蓋率經(jīng)常被用來衡量測(cè)試好壞的指標(biāo)。

所謂的代碼覆蓋率簡(jiǎn)單的說就是在運(yùn)行完測(cè)試用例之后,走過了多少句的代碼,比如說,你要測(cè)試的一個(gè)函數(shù)有100行,但是測(cè)試用例只走過了80行,所以這個(gè)測(cè)試用例的代碼覆蓋率就是80%

Coveralls就是一個(gè)根據(jù)單元測(cè)試導(dǎo)出的數(shù)據(jù)進(jìn)行分析,展現(xiàn)代碼覆蓋率的一個(gè)工具。可以和很多的自動(dòng)構(gòu)建工具一起使用,本文以Travis-CI為例。

項(xiàng)目最終的目錄結(jié)構(gòu)
/
├── src/
│?? └── ClassName.php
|── tests/
| ? ├── ClassNameTest/
| ? |   └── ClassNameTest.php
|?? └── Bootstrap.php
|── .coveralls.yml
|── .travis.yml
|── LICENSE
|── README.md
|── composer.json
|── example.php
└── phpunit.xml.dist

下面開始具體的配置方法。

Composer

如果想更深入的學(xué)習(xí)Composer可以查看官方文檔(地址在這一節(jié)最后)。一個(gè)重要的概念就是每一個(gè)項(xiàng)目都是一個(gè)包
所以我們首先需要在項(xiàng)目根目錄新建一個(gè)composer.json文件,其中的內(nèi)容為(稍后我們?cè)倏雌渲械囊馑?/em>)

{
  "name": "jshadowman/package",
  "description": "this is a test package",
  "version": "0.0.1",
  "type": "library",
  "keywords": [ "database", "logging" ],
  "license": "MIT",
  "require": [
    "php": ">=5.4.0"
  ],
  "require-dev": [
    "satooshi/php-coveralls":"*",
    "phpunit/phpunit": "*"
  ],
  "autoload": {
    "files": [ "./src/ClassName.php" ]
  }
}

name: 這個(gè)字段顧名思義,包的名字,應(yīng)該包含Verdor name(供應(yīng)商)和Project Name(項(xiàng)目名)。值得注意的是這個(gè)字段的值應(yīng)該都是小寫的,這和資源庫發(fā)布注冊(cè)有關(guān)。具體請(qǐng)參考 Packagist

description: 這個(gè)字段應(yīng)該是這個(gè)項(xiàng)目的一個(gè)簡(jiǎn)短的簡(jiǎn)介。一行即可

version: 項(xiàng)目的版本,并不是必須的,而且建議忽略,具體請(qǐng)參考 Version 中文

type: 項(xiàng)目的類型,可選的值有library project metapackage composer-plugin 具體請(qǐng)參考 Type 中文

keywords: 用于在被搜索時(shí)的關(guān)鍵字,可以是一個(gè)數(shù)組 Keywords 中文

license: 項(xiàng)目發(fā)布所使用的開源協(xié)議,可選的值請(qǐng)參考 License 中文

require: 這表示項(xiàng)目所依賴的軟件包列表,除非這些依賴被滿足,否則不會(huì)完成安裝。Require 中文

require: 我們的項(xiàng)目依賴于平臺(tái)軟件包,也就是PHP,PHP的擴(kuò)展包和一些系統(tǒng)類庫。所以我們?cè)?b>require之中添加了對(duì)PHP的依賴,如果有依賴于其他的包,可以按照這種格式填寫。具體請(qǐng)參考 Platform-packages 中文

require-dev: 這個(gè)字段列出的依賴只有在測(cè)試和開發(fā)的時(shí)候才會(huì)安裝,屬于額外的依賴。具體請(qǐng)參考 Require-dev 中文

require & require-dev: 這兩個(gè)字段之下的列表項(xiàng)應(yīng)該是包名到版本的映射,其中版本有很多種寫法,可以根據(jù)需求過濾。具體請(qǐng)參考 Package-Links 中文

autoload: 表示的是autoloader的自動(dòng)加載映射。具體請(qǐng)參考 Autoload 中文

autoload: 其中的映射關(guān)系設(shè)計(jì)到PHP命名空間(Name Space)的一些知識(shí),具體請(qǐng)參考 PSR-0 - PSR-4 - PSR0-4_Github

composer.json中有很多可選的字段和值,編寫的規(guī)范可以參考Document,中文文檔

Coveralls

在項(xiàng)目的根目錄新建.coveralls.yml文件,其中的內(nèi)容為

coverage_clover: build/logs/clover.xml
json_path: build/logs/coveralls-upload.json

coverage_clover: 表示使用指定目錄的Clover XML格式的XML文件,默認(rèn)指向build/logs/clover.xml

json_path: 用來指定將被上傳到Coveralls網(wǎng)站的json文件,默認(rèn)指向build/logs/coveralls-upload.json

值得注意的是舊版本所使用的src_dir已經(jīng)在1.0.0版本中被移除了,所以請(qǐng)注意不要使用這個(gè)選項(xiàng)
Removed src_dir from CoverallsConfiguration

還有其他的配置選項(xiàng)請(qǐng)參考Github - satooshi/php-coveralls

接下來在Coveralls網(wǎng)站中添加倉庫:

進(jìn)入 Coveralls 網(wǎng)站 https://coveralls.io/

點(diǎn)擊右上角的 SIGN IN,在接下來的頁面中選擇GITHUB SIGN IN,然后使用自己的Github賬號(hào)授權(quán)登錄

如果你沒使用過Coveralls的話,登錄成功的界面應(yīng)該是讓你添加一個(gè)代碼倉庫

ADD REPO標(biāo)題下列表中將你的項(xiàng)目從OFF撥到ON

接下來配置PHPunit單元測(cè)試。

PHPUnit

在你的項(xiàng)目根目錄新建phpunit.xml.dist文件,其實(shí)這個(gè)文件也不一定要新建在根目錄,主要記得修改文件內(nèi)容中的路徑就行,不過最好就是根目錄和tests文件夾內(nèi)了。

phpunit.xml.dist文件的內(nèi)容為


    
        
            ./tests
        
    
    
        
            ./src
            
                ./vendor
                ./tests
                ./example.php
            
        
    
    
        
        
    

根元素中的屬性

bootstrap 表示在測(cè)試運(yùn)行前先運(yùn)行一個(gè) "Bootstrap" PHP文件,一般用于配合Composer中的自動(dòng)載入,確保不會(huì)發(fā)生找不到類的情況

colors 表示是否使用彩色輸出

convertErrorsToExceptions PHPUnit 將會(huì)安插一個(gè)錯(cuò)誤處理函數(shù)來將錯(cuò)誤轉(zhuǎn)換為異常,設(shè)置為 false 則表示禁用

convertNoticesToExceptions 此選項(xiàng)設(shè)置為 true 時(shí),由 convertErrorsToExceptions 安插的錯(cuò)誤處理函數(shù)會(huì)將 E_NOTICE、E_USER_NOTICE、E_STRICT 錯(cuò)誤轉(zhuǎn)換為異常。

convertWarningsToExceptions此選項(xiàng)設(shè)置為 true 時(shí),由 convertErrorsToExceptions 安插的錯(cuò)誤處理函數(shù)會(huì)將 E_WARNING 或 E_USER_WARNING 錯(cuò)誤轉(zhuǎn)換為異常。

帶有一個(gè)或多個(gè) 子元素的 元素用于多組的測(cè)試套件

顧名思義,過濾器,對(duì)目錄下的文件或文件夾進(jìn)行過濾

下的 表示白名單,即需要的部分

下的 顧名思義,即需要的目錄

下的 這是需要排除的部分,底下的排除項(xiàng)目看標(biāo)簽名就知道了,可以排除目錄或者單個(gè)文件

最后的部分就是日志紀(jì)錄的內(nèi)容了。

表示導(dǎo)出coverage-clover格式的文件,導(dǎo)出文件名為build/logs/clover.xml

表示將日志直接輸出到標(biāo)準(zhǔn)輸出,即終端上。

完整的XML格式,內(nèi)容可以參考 XML配置文件

需要注意的是在根元素中的屬性并不是所有都在那個(gè)頁面介紹的,還有一部分在命令行選項(xiàng)之中,所以如果在附錄C找不到,那就去命令行選項(xiàng)(注意根元素屬性在命令行選項(xiàng)中是以-分隔的)那一節(jié)找找,肯定有的。

Travis-CI

使用Github賬號(hào)登錄Travis-CI Sign Up

點(diǎn)擊自己的頭像進(jìn)行個(gè)人資料界面,在下面你的項(xiàng)目中,點(diǎn)擊你所需要自動(dòng)構(gòu)建的項(xiàng)目前的按鈕,這個(gè)按鈕就會(huì)變成綠色的勾

在點(diǎn)擊到自己的用戶信息界面之后,在你的Repo上面會(huì)有一個(gè)簡(jiǎn)單的使用介紹,開啟Travis-CI是很簡(jiǎn)單的。

在你的項(xiàng)目根目錄新建.travis.yml文件,其中的內(nèi)容為

language: php

php:
  - "5.4"
  - "5.5"
  - "5.6"
  - "7.0"

before_script:
  - composer install --prefer-dist --dev --no-interaction

script:
  - mkdir -p build/logs
  - phpunit -c phpunit.xml.dist --coverage-clover build/logs/clover.xml

after_script:
  - travis_retry php vendor/bin/coveralls -v

language: 顧名思義,這就是你項(xiàng)目所用的語言,所支持的語言和格式可以查閱 Document,配置PHP

php: 這個(gè)底下是自動(dòng)構(gòu)建所使用的環(huán)境。注意,有固定的格式

before_script: 顧名思義,在正式script之前運(yùn)行的腳本(Shell)命令

script: 開始測(cè)試所用的命令

after_script: 在測(cè)試結(jié)束之后運(yùn)行的命令,比如用于導(dǎo)出結(jié)果到COVERALLS

其中所用到命令介紹

開始測(cè)試之前需要做的準(zhǔn)備工作,即安裝項(xiàng)目需要的依賴包。
composer install --prefer-dist --dev --no-interaction

這句命令的作用是根據(jù)composer.json所描述的依賴關(guān)系進(jìn)行依賴的安裝,具體請(qǐng)參考 Install 中文

--prefer-dist: composer 將盡可能的從 dist 獲取依賴的項(xiàng)目,這將大幅度的加快在 build servers 上的安裝

--dev: 安裝 require-dev 字段中列出的包

--no-interaction: 不要詢問任何交互問題。因?yàn)槭亲詣?dòng)進(jìn)行依賴安裝的,我們不能手動(dòng)控制,所以發(fā)生任何需要交互的問題,我們都是處理不了的

準(zhǔn)備工作做好之后,開始正式的測(cè)試工作,首先當(dāng)然需要先新建一個(gè)存放日志的目錄
mkdir -p build/logs

這句命令會(huì)讓系統(tǒng)創(chuàng)建一個(gè)連續(xù)的目錄,如果父目錄不存在就先創(chuàng)建父目錄

開始進(jìn)行單元測(cè)試并導(dǎo)出代碼覆蓋率報(bào)告
phpunit -c phpunit.xml.dist --coverage-clover build/logs/clover.xml

這句命令是運(yùn)行phpunit進(jìn)行單元測(cè)試,具體請(qǐng)參考 PHPUnit - 命令行選項(xiàng)

-c phpunit.xml.dist: 從指定的文件中讀取配置信息,這里的配置文件是phpunit.xml.dist

--coverage-clover build/logs/clover.xml:生成并導(dǎo)出Clover XML格式的代碼覆蓋率報(bào)告

測(cè)試完之后接下來就是導(dǎo)出報(bào)告到Coveralls了
travis_retry php vendor/bin/coveralls -v

這句命令是其實(shí)是php vendor/bin/coveralls -v,前面的travis_retry的作用是檢查后面命令的返回值,如果不是0(返回值為0表示正常結(jié)束),那就重復(fù)執(zhí)行3次,如果3次都不為0,那就報(bào)錯(cuò)。

php vendor/bin/coveralls -v:

這句命令是使用PHP執(zhí)行vendor/bin/下的coveralls這個(gè)文件,-v表示verbose,即顯示詳細(xì)的報(bào)告。
這個(gè)命令執(zhí)行之后就可以在Coveralls這個(gè)網(wǎng)站中看到詳細(xì)的數(shù)據(jù)了。

phpunit執(zhí)行的結(jié)果和coveralls導(dǎo)出的結(jié)果都可以在Travis-CIBuild Jobs下看到

git push

接下來就是把這些文件push到Github上,Travis-CI就會(huì)自動(dòng)構(gòu)建,然后開始單元測(cè)試,并把測(cè)試結(jié)果中的代碼覆蓋率發(fā)送到Coveralls。如此,一套流程就結(jié)束了。

展示

辛辛苦苦大半天,就是為了展示自己的成績(jī)啊。
所以我們看到的別人家項(xiàng)目地下這么漂亮的圖標(biāo)我們也要有啊。

README.md文件中添加(注意將以下 Github_ID 替換為自己的 Github-ID,將 Repo_Name 替換為你的項(xiàng)目名字。沒有尖括號(hào)哦~還有注意區(qū)分大小寫哦~如果還需要改分支(branch)的話,看到鏈接你應(yīng)該也懂吧?我相信你! )

[![Build Status](https://travis-ci.org//.svg?branch=master)](https://travis-ci.org//)
[![Coverage Status](https://coveralls.io/repos/github///badge.svg?branch=master)](https://coveralls.io/github//?branch=master)

其實(shí)這些markdown語句可以直接復(fù)制的

Travis-CI: Build圖標(biāo)可以在Travis-CI網(wǎng)站中自己項(xiàng)目名的右邊有一個(gè) build:**** 的圖標(biāo),直接點(diǎn)擊這個(gè)圖標(biāo),將Image URL改成Makedown就可以看到啦

Coveralls: 也是進(jìn)入自己Repo的詳細(xì)信息中,中間是LATEST BUILDS信息,在最右邊有一個(gè)README BADGE,底下那個(gè)圖標(biāo)右邊有個(gè)按鈕Embed ?,點(diǎn)擊復(fù)制Markdown的語句即可。

Packagist(可選)

在覺得自己的項(xiàng)目開發(fā)的差不多時(shí),我們就可在在Packagist上發(fā)布自己的包啦,發(fā)布之后,就可以被別人的項(xiàng)目通過Composer所依賴~

可以使用Github賬號(hào)登錄,或者自己注冊(cè)個(gè)賬號(hào)登錄,在右上角Sign In選擇是注冊(cè)還是使用Github賬號(hào)登錄

注冊(cè)完之后,可以在右上方Submit中提交一個(gè)包,點(diǎn)擊Submit按鈕 - Submit

接下來會(huì)讓你輸入Repository URL,直接輸入git://github.com//

Packagit會(huì)在后臺(tái)clone你的項(xiàng)目,并且檢查項(xiàng)目中的composer.json文件,第一個(gè)要檢查的就是包的名字,如果包名中有大寫的字母,Packagit就會(huì)報(bào)一個(gè)包名不應(yīng)該有大寫字母的錯(cuò)誤,所以,這就是上文所說包名最好是小寫的來由。

提交之后就可以看到自己的這個(gè)包的一些信息了,比如被下載了多少次,被安裝了多少次。

回到Github,打開代碼倉庫的Settings -> Webhooks & services,然后在Services右邊有個(gè)Add Service的按鈕,點(diǎn)擊輸入查找Packagit

之后會(huì)讓你輸入用戶名和Token,這些信息都在你的Packagit主頁中 個(gè)人主頁

個(gè)人主頁有個(gè)Your API Token的按鈕,按下按鈕,就可以看到自己的API TOKEN了,注意保密哦

其中packagist海油4個(gè)小圖標(biāo),記得替換 PACKAGIST_IDPACKAGE_NAME 哦,不是 Github_IDRepo_Name

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/21562.html

相關(guān)文章

  • 你的GitHub項(xiàng)目添加持續(xù)集成Travis CI

    摘要:為你的項(xiàng)目添加持續(xù)集成本篇文章接上篇基于發(fā)布包的流程,繼續(xù)為項(xiàng)目添加持續(xù)集成提供的是持續(xù)集成服務(wù)。它綁定上的項(xiàng)目,只要有新代碼更新,它就會(huì)自動(dòng)抓取。 為你的GitHub項(xiàng)目添加持續(xù)集成Travis CI 本篇文章接上篇 《基于typescript發(fā)布npm包的流程》,繼續(xù)為項(xiàng)目添加持續(xù)集成 Travis: Travis CI 提供的是持續(xù)集成服務(wù)。它綁定 GitHub 上的項(xiàng)目,只...

    kyanag 評(píng)論0 收藏0
  • 看吧,這就是現(xiàn)代化 PHP 該有的樣子

    摘要:這大概是我沒有及早使用,或多數(shù)開發(fā)者流連現(xiàn)狀造成的。它就是,一個(gè)的框架。行為驅(qū)動(dòng)開發(fā)是來自測(cè)試驅(qū)動(dòng)開發(fā)的開發(fā)過程。簡(jiǎn)單的說,它就是經(jīng)常可能一天幾次將小塊代碼整合進(jìn)基礎(chǔ)代碼當(dāng)中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區(qū)協(xié)同翻譯的文章,已完成翻譯,更多信息請(qǐng)點(diǎn)擊?協(xié)同翻譯介紹?。 文章...

    Tangpj 評(píng)論0 收藏0
  • 一個(gè)靠譜的前端開源項(xiàng)目需要什么?

    摘要:一個(gè)靠譜的應(yīng)該包含以下幾部分言簡(jiǎn)意賅的項(xiàng)目介紹你的項(xiàng)目解決了什么核心問題,有哪些令人心動(dòng)的特性。除了在中提到遵循的開源協(xié)議外,一個(gè)靠譜的開源項(xiàng)目還會(huì)將該開源協(xié)議的內(nèi)容文檔放在自己的項(xiàng)目下方。 0. 前言 寫前端代碼一段時(shí)間之后,你可能會(huì)萌生做一個(gè)開源項(xiàng)目的想法,一方面將自己的好點(diǎn)子分享出去讓更多的人受益,另一方面也可以在社區(qū)貢獻(xiàn)的環(huán)境下學(xué)到更多的東西從而快速成長(zhǎng)。但是開源項(xiàng)目也有開源項(xiàng)...

    hiyayiji 評(píng)論0 收藏0
  • 一個(gè)靠譜的前端開源項(xiàng)目需要什么?

    摘要:一個(gè)靠譜的應(yīng)該包含以下幾部分言簡(jiǎn)意賅的項(xiàng)目介紹你的項(xiàng)目解決了什么核心問題,有哪些令人心動(dòng)的特性。除了在中提到遵循的開源協(xié)議外,一個(gè)靠譜的開源項(xiàng)目還會(huì)將該開源協(xié)議的內(nèi)容文檔放在自己的項(xiàng)目下方。 0. 前言 寫前端代碼一段時(shí)間之后,你可能會(huì)萌生做一個(gè)開源項(xiàng)目的想法,一方面將自己的好點(diǎn)子分享出去讓更多的人受益,另一方面也可以在社區(qū)貢獻(xiàn)的環(huán)境下學(xué)到更多的東西從而快速成長(zhǎng)。但是開源項(xiàng)目也有開源項(xiàng)...

    DesGemini 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<