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

PHPUnit 3.0 新特性深度解析:Selenium 整合、代碼覆蓋率分析與偽對象測試

     編輯:PHP 綜合知識

PHPUnit 3.0 里程碑特性

3.0 版本大幅擴充功能,成為 PHP 測試生態基石。

1. 偽對象與存根

解決:如何測試方法內部呼叫、隔離外部依賴(資料庫、API、檔案系統)。

<?php
class UserServiceTest extends PHPUnit_Framework_TestCase {
    public function testRegisterCallsEmailService() {
        // 建立 EmailService 偽對象
        $mockEmail = $this->getMockBuilder('EmailService')
            ->setMethods(['sendWelcome'])
            ->getMock();
        $mockEmail->expects($this->once())
            ->method('sendWelcome')
            ->with($this->equalTo('test@example.com'));

        $service = new UserService($mockEmail);
        $service->register('test@example.com');
    }
}
  • getMockBuilder() 流暢介面建立偽對象
  • expects() 設定呼叫次數預期
  • with() 斷言參數

2. Selenium RC 整合:跨瀏覽器端到端測試

PHPUnit 內建 PHPUnit_Extensions_SeleniumTestCase,支援:

  • 真實瀏覽器驅動(Firefox、Chrome、IE、Safari)
  • 跨作業系統測試
  • JavaScript 重度應用測試
  • 頁面截圖、DOM 斷言、等待條件
<?php
class WebTest extends PHPUnit_Extensions_SeleniumTestCase {
    protected function setUp() {
        $this->setBrowser('*firefox');
        $this->setBrowserUrl('https://localhost/app/');
    }
    public function testLogin() {
        $this->open('/login');
        $this->type('name=username', 'admin');
        $this->type('name=password', 'secret');
        $this->click('css=button[type=submit]');
        $this->waitForPageToLoad(10000);
        $this->assertTextPresent('歡迎回來');
    }
}

需啟動 Selenium Server:java -jar selenium-server-standalone.jar

3. 代碼覆蓋率分析

量化測試完整性,發現未測試代碼。

# 產生 HTML 報告
phpunit --coverage-html ./report ./tests
  • 需安裝 Xdebug 擴充
  • 報告包含:行覆蓋率、分支覆蓋率、路徑覆蓋率
  • 可設定最低覆蓋率門檻,整合 CI 流程

安裝與升級

# PEAR 安裝
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear install phpunit/PHPUnit

# 從 2.x 升級
# 類別前綴從 PHPUnit2_ 改為 PHPUnit_
# 建議全面遷移至新命名空間

作者簡介

Sebastian Bergmann,PHPUnit 創始人,eZ Systems 架構師,長期貢獻 PHP 核心與開源生態。

現代替代:PHPUnit 9/10 + PHP 8

  • 原生支援 PHP 8 屬性(#[Test])
  • 移除 Selenium 整合(改用 facebook/webdriver + WebDriver)
  • 覆蓋率驅動改用 PCOV(效能優於 Xdebug)
  • Composer 安裝:composer require --dev phpunit/phpunit
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved