PHPUnit袖珍指南之PHPUnit的目的

來源:互聯網
上載者:User
關鍵字 PHPUnit袖珍指南之PHPUnit的目的

到此為止,我們只有兩個對Array和內建函數sizeof()的測試。當我們開始測試大量的array_*()函數時,每個都需要一個測試。我們可以每個都從頭寫起。但是,更好的方法是一次性寫好一個測試基礎構架,以後就只用寫每個測試不同的部分。phpUnit就是這樣一個基礎構架。

例5展示了如何用PHPUnit重寫例4中的兩個測試。

例5. 用PHPUnit測試 Array和sizeof().

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

 class ArrayTest extends PHPUnit2_Framework_TestCase {
  public function testNewArrayIsEmpty( ) {
   // 建立數組fixture。
   $fixture = Array( );
 
   // 斷言數組fixture的大小是0。
   $this->assertEquals(0, sizeof($fixture));
  }
  public function testArrayContainsAnElement( ) {
   // 建立數組fixture。
   $fixture = Array( );

 // 為數組fixture增加一個成員。
   $fixture[] = 'Element';
 
   //斷言數組fixture的大小是1。
   $this->assertEquals(1, sizeof($fixture));
  }
 }
?>

例5告訴我們用PHPUnit來寫測試的基本步驟是:

1.類Class的測試類別是ClassTest。

2.ClassTest一般繼承PHPUnit2_ Framework_TestCase。

3.測試是公有方法,沒有參數,名字是test*。

4.在測試方法中,斷言函數,如assertEquals()(見表6)用於斷言實際值是否匹配期望值。

一個如PHPUnit的架構需要解決一系列問題,有些看起來互相衝突。測試必須同時滿足以下條件:

易學

測試必須容易學,否則,開發人員不會去學

易開發

測試必須容易開發,否則,開發人員不會去開發

易讀

測試代碼必須沒有外部關係,這樣測試本身不會在雜亂無章中迷失。

容易執行

測試應該很容易執行,執行的結果以一種清楚和明確的格式表達出來。

快速執行

測試應該執行的很快,這樣每天才能執行上千次。

代碼隔離

測試之間不能互相影響,測試順序的改變不應該影響結果。

可組合的

我們應該可以以任何組合來運行測試,這是代碼隔離的一個必然結果。

這些約束條件有兩個主要的衝突:

易學vs易開發

測試通常不需要應用到編程全部的靈活性。很多測試載入器提供了它們自己的測試指令碼語言,這些語言只有書寫測試所需特性的最小集,因為沒有雜訊來幹擾你的測試內容,寫出來的測試易讀易寫。但是學一種新的編織郵件和一套工具還是不方便的,容易混淆視聽。

代碼隔離vs快速執行

如果你想要一個測試的結果不影響另一個,每個測試在開始啟動並執行階段,都需要建立測試的全專題,返回後又要恢複運行之前的狀態。可是,設定狀態需要的時間很長(如,串連到資料庫,用真實資料初始化到一個已知狀態)

PHPUnit解決這個問題的辦法是採用PHP作為測試語言。有時,全功能的PHP對於書寫短小的,直接的測試是過於強大了,不過,我們利用的程式員已經有使用PHP的全部經驗。因為我們需要說服勉強的測試人員,降低書寫這些初始測試的門檻是及其重要的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.