【夯實PHP基礎】PHPUnit -- PHP測試框架

本文地址javascript

 

分享提綱:php

  1.概述html

  2.安裝java

  3.編寫第一個測試用例linux

  4.PHPUnit高級git

  5.參考github

 

 

1.概述

  1)【測試框架】web

  它是一款輕量級的PHP測試框架,是一個xUnit的體系結構的單元測試框架。複雜的項目,經過單元測試可以快速排查bug,有效減小bug的產生。簡單的項目,使用php自帶的var_dump()print_r()也能很方便的調試bug。PHPUnit經過運行測試用例裏的斷言(例如判斷返回結果不爲空),檢查代碼是否符合預期。json

  

2.安裝

  安裝方式有兩種。一種是使用phar包,一種是使用Composer。bash

  mac下的安裝請參考 http://blog.csdn.net/u013166311/article/details/52622560

  (能夠下載低版本的phpunit wget https://phar.phpunit.de/phpunit-4.0.14.phar

因而打開終端,先pear version 驗證是否安裝了pear。

若是沒有安裝$sudo PHP /usr/lib/php/install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin

用$ pear version檢測安裝成功

$ sudo pear upgrade-all  更新。

最後用如下命令安裝成功:

$ wget https://phar.phpunit.de/phpunit-4.0.14.phar

$ chmod +x phpunit.phar

$ sudo mv phpunit.phar /usr/local/bin/phpunit
mac下安裝

 

  2.1)使用phar包
    最新版的穩定版phar包是5.7,下載地址 https://phar.phpunit.de/phpunit.phar

    phar5.7發佈於2016年12月2日,於2018年2月2日結束支持。

    PHPUnit 5.7 支持 PHP 5.6, PHP 7.0, 和 PHP 7.1。

    注意:PHP的版本比較低,能夠下載低版本的 phpunit,例如 wget https://phar.phpunit.de/phpunit-4.0.14.phar

    運行方法:

# 通用
php phpunit.phar --version

# linux
chmod +x phpunit.phar
sudo mv phpunit.phar /usr/local/bin/phpunit
phpunit --version

  

  能夠查看版本號。

  2.2)使用Composer
    若是用 Composer 來管理項目的依賴關係,只要在項目的composer.json 文件中簡單地加上對 phpunit/phpunit 的依賴關係便可。下面是一個最小化的  composer.json 文件的例子,只定義了一個對 PHPUnit 5.7 的開發時依賴:

{
    "require-dev": {
        "phpunit/phpunit": "5.5.*"
    }
}

 

  要經過 Composer 完成系統級的安裝,能夠運行:

composer global require "phpunit/phpunit=5.5.*"

 

  請確保 path 變量中包含有 ~/.composer/vendor/bin/

 

3.編寫第一個測試用例

  3.1)新建文件夾Testcase,編寫SayHello.php:

<?php
 
class SayHello{
 
    public function printHello(){
        echo 'Hello';
        return 'Hello';

    }
}
?>
SayHello.php

 

3.2)新建測試用例SayHelloTest.php
<?php
 
require_once 'SayHello.php';
 
class SayHelloTest extends PHPUnit_Framework_TestCase {
 
    public function setUp(){ }

    public function tearDown(){ }

    public function testConnectionIsValid(){
        $hi = new SayHello();
        $this->assertTrue($hi->printHello() == 'Hello');
    }
 
}
SayHelloTest.php

 

 
編寫完成後,切換到phpunit.phar所在目錄命令行執行:
$ php phpunit.phar Testcase/SayHelloTest.php

 

  輸出結果:

PHPUnit 5.7.4 by Sebastian Bergmann and contributors.

.                                                                  1 / 1 (100%)Hello

Time: 130 ms, Memory: 10.00MB

OK (1 test, 1 assertion)

 

結果代表:

  測試經過,1個測試方法,1個斷言,沒有失敗。

  這裏注意的是:
    一、全部以Test結尾的類均爲測試用例;
    二、全部以test開頭的方法均是測試方法,會自動運行;
    三、setUp是每一個測試用例最早運行的方法,tearDown是每一個測試用例最後運行的方法;
    四、assertTrue用於判斷結果是否爲true。

  

 

4.PHPUnit高級

  4.1) 模擬對象MOCK

    -- mock的深層次原理是什麼?
      類PHPUnit_Framework_MockObject_Generator 中的方法 getMock()
        在phpunit檢測到mock對象,當要替換的對象由類實例化時,就被替換成了mock的對象,而後,使用mock的方法放回對象的值。
    --【 百度百科--定義mock
       mock在各語言中的實現
 

 

  4.2) 一些常識

  • @test 標註將其標記爲測試方法
  • @depends 標註來表達測試方法之間的依賴關係: 被依賴的函數的返回值會被當作依賴着的輸入參數 

5.參考

  5.0)【好】PHPUnit手冊

  5.1)開始使用 PHPUnit – PHP測試框架

  5.2)web3d/TPUnit: ThinkPHP PHPUnit框架集成

  5.3)[PHP]PHPUnit安裝配置及樣例 | CoinIdea的技術分享博客

  5.4)《xUnit Test Patterns》學習筆記系列 - CoderZh - 博客園
  

  5.5)【好】PHPUnit筆記

相關文章
相關標籤/搜索