作為一個(gè)PHP開發(fā),一直聽說單元測(cè)試母怜,卻沒有使用過治唤,自感慚愧,今天閑來無事糙申,去了解了一下單元測(cè)試宾添,并且在mac上phpstorm上配置了phpunit
那么使用單元測(cè)試有什么好處呢?
單元測(cè)試是對(duì)單獨(dú)的代碼對(duì)象進(jìn)行測(cè)試的過程柜裸,比如對(duì)函數(shù)缕陕、類、方法進(jìn)行測(cè)試疙挺。單元測(cè)試可以使用任意一段已經(jīng)寫好的測(cè)試代碼扛邑,也可以使用一些已經(jīng)存在的測(cè)試框架,比如JUnit铐然、PHPUnit或者Cantata++蔬崩,單元測(cè)試框架提供了一系列共同恶座、有用的功能來幫助人們編寫自動(dòng)化的檢測(cè)單元,例如檢查一個(gè)實(shí)際的值是否符合我們期望的值的斷言沥阳。單元測(cè)試框架經(jīng)常會(huì)包含每個(gè)測(cè)試的報(bào)告跨琳,以及給出你已經(jīng)覆蓋到的代碼覆蓋率。
而我使用則是PHPUnit桐罕,PHPUnit是一個(gè)用PHP編程語言開發(fā)的開源軟件脉让,是一個(gè)單元測(cè)試框架。下面則是我配置phpunit的步驟
第一步:首先我們需要下載phpunit.phar文件功炮,而下載phpunit有幾種方法溅潜,這個(gè)可以自己在百度上找到,最簡(jiǎn)單的方法則是去官網(wǎng)去下載薪伏,因?yàn)楣倬W(wǎng)有最新的版本(而我發(fā)現(xiàn)了一個(gè)更簡(jiǎn)單的方法滚澜,如下)
在Preferences->Languages & Frameworks->PHP->Test Frameworks中右側(cè)有一個(gè)Download phpunit,這里同樣可以下載phpunit.phar
下載phpunit.phar后將文件移動(dòng)至/Applications/MAMP/bin/php/php5.6.32/bin/嫁怀,因?yàn)檫@個(gè)是我本地mamp php的位置设捐,你們根據(jù)自己php的位置存放phpunit.phar
注意:下載phpunit.phar需要對(duì)應(yīng)自己PHP版本,如果您想使用示例代碼 (PHP 5.6版本) 眶掌,您需要下載 http://phar.phpunit.cn/phpunit-5.6.phar 而不是 http://phar.phpunit.cn/phpunit.phar
第二步:下面我們使用命令更改phpunit.phar的運(yùn)行權(quán)限,首先找到我們之前下載的phpunit.phar
chmod +x 命令自行百度搜索
第三步:使用mv命令將phpunit-5.6.1.phar文件改名為phpunit:sudo mv phpunit-5.6.1.phar phpunit
因?yàn)殚_始下載phpunit.phar文件的名字帶有版本號(hào)挡育,為了方便巴碗,我們這里改變文件名
第四步:到了這里我們基本工作基本完成朴爬,這里我們開始配置phpstorm
第五步:這里我們配置phpunit
至此我們?cè)趐hpstorm中也完成了phpunit的配置,我們這里就來測(cè)試一下是否配置成功橡淆;
在Terminal中輸入phpunit
在我們的項(xiàng)目中加入一段測(cè)試代碼
測(cè)試類繼承于 PHPUnit\Framework\TestCase
<?php
use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
public function testPushAndPop()
{
$stack = [];
$this->assertEquals(0, count($stack));
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertEquals(1, count($stack));
$this->assertEquals('foo', array_pop($stack));
$this->assertEquals(0, count($stack));
}
}
?>
點(diǎn)擊右鍵召噩,我們會(huì)發(fā)現(xiàn)Run 文件名
右鍵run即可
如果大家有疑問可以查看phpunit官網(wǎng)或者中文網(wǎng)址
phpunit中文網(wǎng):http://www.phpunit.cn/
phpunit手冊(cè):https://phpunit.de/manual/6.5/zh_cn/installation.html