標籤(空格分隔): phpphp
如今是凌晨 3 點。咱們怎樣才能知道本身的代碼依然在工做呢?Web 應用程序是 24x7 不間斷運行的,所以個人程序是否還在運行這個問題會在晚上一直困擾我。單元測試已經幫我對本身的代碼創建了足夠的信心 —— 這樣我就能夠安穩地睡個好覺了。html
單元測試 是一個爲代碼編寫測試用例並自動運行這些測試的框架。測試驅動的開發 是一種單元測試方法,其思想是應該首先編寫測試程序,並驗證這些測試能夠發現錯誤,而後纔開始編寫須要經過這些測試的代碼。當全部測試都經過時,咱們開發的特性也就完成了。這些單元測試的價值是咱們能夠隨時運行它們 —— 在簽入代碼以前,重大修改以後,或者部署到正在運行的系統以後均可以。git
-- IBM(https://www.ibm.com/developer...github
單元測試是不少編程語言的基本功能, 爲保證代碼的穩定性和功能正常, 適當的進行單元測試是頗有必要的. PHPunit是一個輕量級的PHP單元測試框架。 編程
PHPunit能夠和xdebug配合來生成代碼覆蓋率報告, 而且能夠與Jenkins集成來自動測試, 最後能夠和selenium整合來完成大型的自動化集成測試.bootstrap
wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar mv phpunit.phar /usr/local/bin/phpunit sudo mv phpunit.phar /usr/local/bin/phpunit phpunit --version
<?php use PHPUnit\Framework\TestCase as BaseTestCase; class StackTest extends BaseTestCase { public function testPushAndPop() { $stack = array(); $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)); } }
執行結果以下框架
/** * @see https://github.com/jiangjianyong/x-tools/tree/master/language/php/x-phpunit * 使用說明 代碼中的phpunit.xml的配置 * 引入phpunit_bootstrap.php * 執行class/Test/*.class.php * 避免在每一個測試文件中都引入相同的頭文件. * 須要在phpunit_bootstrap.php中將TestCase.class.php include, 不然會報錯(TestCase類不存在). * 在含有phpunit.xml文件的目錄下, 執行phpunit, 將會按照phpunit.xml配置執行測試. */ <!-- phpunit.xml --> <?xml version="1.0" encoding="UTF-8"?> <phpunit colors="true" stopOnFailure="false" bootstrap="phpunit_bootstrap.php"> <testsuites> <testsuite name="class/Test"> <directory suffix=".class.php">../class/Test</directory> </testsuite> </testsuites> </phpunit>
phpunit --coverage-html dir testsuite.php
PHPUnit @package_version@ by Sebastian Bergmann.
The Xdebug extension is not loaded.
PHPUNIT生成代碼測試覆蓋率報告時,須要xdebug擴展支持。編程語言