首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Mac OS X 搭建 PHP Yii 框架測試環境:PHPUnit + Selenium 完整配置指南

     編輯:PHP 綜合知識

核心概念釐清

Selenium

  • 自動化測試工具,可啟動真實瀏覽器執行測試
  • 架構:Server (Java) + Client (各語言)
  • Server 啟動 HTTP 服務 (預設埠 4444),Client 透過 HTTP 指令控制瀏覽器

PHPUnit

  • PHP 單元測試框架 + 測試工具
  • 社群開發了 phpunit-selenium 擴充,作為 Selenium Client

Yii 整合方式

Yii 在 PHPUnit 基礎上封裝測試基類,需同時依賴 PHPUnit 與 Selenium。

環境安裝步驟

1. Firefox 瀏覽器

Selenium 主支援 Firefox/Chrome,macOS 請先安裝 Firefox。

2. JDK (Java Development Kit)

Selenium Server 為 Java 開發,需安裝 JDK。

3. Selenium Server

$ brew install selenium-server-standalone

注意:下載源在 Google APIs,需翻牆。

啟動指令:

$ selenium-server -p 4444

4. PHPUnit 安裝(Composer 方式,現代標準)

安裝 Composer:

$ brew update
$ brew tap josegonzalez/homebrew-php
$ brew tap homebrew/versions
$ brew install php55-intl
$ brew install josegonzalez/php/composer

專案根目錄建立 composer.json:

{
  "require-dev": {
    "phpunit/phpunit": "4.7.*",
    "phpunit/php-invoker": "*",
    "phpunit/dbunit": ">=1.2",
    "phpunit/phpunit-selenium": ">=1.2",
    "phpunit/phpunit-story": "*"
  }
}

安裝依賴:

$ sudo composer install

產生 vendor/bin/phpunit 執行檔。

執行測試

進入 protected/tests 目錄,確保 Selenium Server 運行中:

$ ../../vendor/bin/phpunit functional/SiteTest.php

Firefox 將自動啟動執行測試,輸出:

PHPUnit 4.7.7 by Sebastian Bergmann and contributors.
Warning: Deprecated configuration setting "selenium" used .
Time: 11.52 seconds, Memory: 6.50Mb
OK (1 test, 1 assertion)

Yii 測試架構詳解

測試類型

  • 單元測試:驗證類別方法正確性,由開發者撰寫
  • 功能測試:驗證功能流程(如發文、登入),涉及多類別,由需求熟悉者撰寫

測試驅動開發 (TDD) 週期

  1. 撰寫失敗測試(功能未實現)
  2. 執行所有測試,確認新測試失敗
  3. 編寫代碼使測試通過
  4. 執行所有測試,確認全部通過
  5. 重構代碼,確保測試仍通過
  6. 重複 1-5 推進功能

目錄結構

protected/tests/
├── fixtures/          # 測試固定資料
├── functional/        # 功能測試
├── unit/              # 單元測試
├── report/            # 覆蓋率報告
├── bootstrap.php      # 啟動腳本
├── phpunit.xml        # PHPUnit 設定
└── WebTestCase.php    # 功能測試基類

啟動腳本 bootstrap.php

$yiit = 'path/to/yii/framework/yiit.php';
$config = dirname(__FILE__).'/../config/test.php';
require_once($yiit);
require_once(dirname(__FILE__).'/WebTestCase.php');
Yii::createWebApplication($config);

測試設定 test.php

return CMap::mergeArray(
    require(dirname(__FILE__).'/main.php'),
    array(
        'components' => array(
            'fixture' => array(
                'class' => 'system.test.CDbFixtureManager',
            ),
            // 取消註解可使用獨立測試資料庫
            // 'db' => array('connectionString' => 'DSN for test database'),
        ),
    )
);

固定資料管理

CDbFixtureManager 自動處理:

  • 測試前重置相關表為已知狀態
  • 提供行資料別名存取
  • 支援自訂初始化腳本 (init.php, TableName.init.php)

固定資料檔案範例 fixtures/Post.php:

return array(
    'sample1' => array(
        'title' => 'test post 1',
        'content' => 'test post content 1',
        'createTime' => 1230952187,
        'authorId' => 1,
    ),
    'sample2' => array(
        'title' => 'test post 2',
        'content' => 'test post content 2',
        'createTime' => 1230952287,
        'authorId' => 1,
    ),
);

常用測試指令

# 執行單一測試
phpunit functional/PostTest.php

# 執行功能測試目錄所有測試
phpunit --verbose functional

# 執行單元測試並生成覆蓋率報告 (需 xdebug)
phpunit --coverage-html ./report unit

避坑指南

  • PEAR 安裝 PHPUnit 已棄用,請改用 Composer
  • Selenium Server 必須在執行功能測試前啟動
  • 覆蓋率報告需安裝並啟用 xdebug 擴充
  • 測試資料庫應獨立於開發/生產資料庫
  • 大量固定資料會拖慢測試,僅為會變動的表建立 fixtures

完成上述配置,你將擁有專業級的 Yii 應用測試環境,支援持續整合與品質保證流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved