• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • (二)利用單元測試在每個層上對 PHP 代碼進行檢查

    發表于:2009-04-03來源:作者:點擊數: 標簽:代碼phpPHP單元檢查
    HTML 測試 對整個 PHP 應用程序進行測試的下一個步驟是對前端的超文本標記語言(HTML)界面進行測試。要進行這種測試,我們需要一個如下所示的 Web 頁面。 圖 1. 測試 Web 頁面 這個頁面對兩個數字進行求和。為了對這個頁面進行測試,我們首先從 單元測試代

    HTML 測試

            對整個PHP 應用程序進行測試的下一個步驟是對前端的超文本標記語言(HTML)界面進行測試。要進行這種測試,我們需要一個如下所示的 Web 頁面。
                                         圖 1. 測試 Web 頁面

                          
            這個頁面對兩個數字進行求和。為了對這個頁面進行測試,我們首先從單元測試代碼開始入手。
    清單 10. TestPage.php

    <?php
    require_once 'HTTP/Client.php';
    require_once 'PHPUnit2/Framework/TestCase.php';

    class TestPage extends PHPUnit2_Framework_TestCase
    {
      function get_page( $url )
      {
        $client = new HTTP_Client();
        $client->get( $url );
        $resp = $client->currentResponse();
        return $resp['body'];
      }
      function test_get()
      {
        $page = TestPage::get_page( 'http://localhost/unit/add.php' );
        $this->assertTrue( strlen( $page ) > 0 );
        $this->assertTrue( preg_match( '/<html>/', $page ) == 1 );
      }
      function test_add()
      {
        $page = TestPage::get_page( 'http://localhost/unit/add.php?a=10&b=20' );
        $this->assertTrue( strlen( $page ) > 0 );
        $this->assertTrue( preg_match( '/<html>/', $page ) == 1 );
        preg_match( '/<span id="result">(.*?)<\/span>/', $page, $out );
        $this->assertTrue( $out[1]=='30' );
      }
    }
    ?>
     
            這個測試使用了 PEAR 提供的 HTTP Client 模塊。我發現它比內嵌的 PHP Client URL Library(CURL)更簡單一點兒,不過也可以使用后者。

            有一個測試會檢查所返回的頁面,并判斷這個頁面是否包含 HTML。第二個測試會通過將值放到請求的 URL 中來請求計算 10 和 20 的和,然后檢查返回的頁面中的結果。

            這個頁面的代碼如下所示。
    清單 11. TestPage.php

    <html><body><form>
    <input type="text" name="a" value="<?php echo($_REQUEST['a']); ?>" /> +
    <input type="text" name="b" value="<?php echo($_REQUEST['b']); ?>" /> =
    <span id="result"><?php echo($_REQUEST['a']+$_REQUEST['b']); ?></span>
    <br/>
    <input type="submit" value="Add" />
    </form></body></html>
     
            這個頁面相當簡單。兩個輸入域顯示了請求中提供的當前值。結果 span 顯示了這兩個值的和。<span> 標記標出了所有區別:它對于用戶來說是不可見的,但是對于單元測試來說卻是可見的。因此單元測試并不需要復雜的邏輯來找到這個值。相反,它會檢索一個特定 <span> 標記的值。這樣當界面發生變化時,只要 span 存在,測試就可以通過。

            與前面一樣,首先編寫測試用例,然后創建一個失敗版本的頁面。我們對失敗情況進行測試,然后修改頁面的內容使其可以工作。結果如下:
    清單 12. 測試失敗情況,然后修改頁面

    % phpunit TestPage.php
    PHPUnit 2.2.1 by Sebastian Bergmann.

    ..

    Time: 0.25711488723755

    OK (2 tests)
    %

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>