2011-01-12 75 views
11

當一個人開始搜索PHP單元測試,人們通常絆倒:沒有框架的PHP單元測試...可能嗎?建議?

  1. PHPUnit的。
  2. SimpleTest。
  3. 大量的博客解釋如何使用PHPUnit和SimpleTest。
  4. 的StackOverflow有關的PHPUnit和SimpleTest的問題...

...我覺得你的想法。

我想知道:如何使用普通ol PHP進行單元測試?這甚至是一個明智的努力?我想我將不得不建立自己的小框架。我很感興趣,因爲我想更好地瞭解我的單元測試中發生了什麼。我也很感興趣,因爲我認爲一個輕量級的定製解決方案可以更快地運行我的測試。

紅利問題:誰是失敗者?是否有第三個框架值得研究(用於流行的目的)?

+2

學習是一個有效的論證;不過,我不確定演出是不是一個。這些框架沒有那麼多的開銷。 – 2011-01-12 15:18:29

+0

相關:[2010年PHP單元測試框架的狀態是什麼?](http://stackoverflow.com/questions/2408860/whats-the-state-of-php-unit-testing-frameworks-in-2010) – 2011-01-12 15:19:00

回答

7

單元測試基本上是一組斷言。

考慮以下PHPUnit的測試案例:

class MyTest extends PHPUnit_Framework_TestCase { 
    public function testFoo() { 
     $obj = new My; 
     $this->assertEquals('bar', $obj->foo()); 
    } 
} 

你可以有一個類似的測試情況下不使用PHPUnit的:

class MyTest { 
    public function testFoo() { 
     $obj = new My; 
     assert("$obj->foo() == 'bar'"); 
    } 
} 

但是,這樣做也沒有一個框架,你將手工必須創建一個測試用例(MyTest)的實例並手動調用每個測試方法(MyTest :: testFoo等)。框架(例如:PHPUnit)只不過是一組「幫助器」,使其更容易和更快速:通過自動生成骨架;內置模擬對象,命令行腳本等。你可以在沒有框架的情況下進行單元測試,但最終你可能會節省更多的時間,因爲畢竟這通常是框架的用途。

2

我的看法是什麼是錯誤的標準輪(PHPUnit在所有可能性),以保證替代的發展?畢竟,在這種情況下,沒有證明的解決方案是明智的選擇嗎?

此外,如果您想要繼續使用連續集成服務器,標準工具的輸出將更易於使用。 (當然,你可以用相同的格式創建自己的工具輸出,但這會導致我回到「爲什麼重新發明車輪」的論點)。

1

我在一年前使用了SimpleTest,它非常輕便。除了爲你提供一種自動加載測試包和斷言的方法之外,真的沒有什麼。

本質上它包括所有以「test」開頭的類,它會調用該類內以「test」開頭的所有方法。在方法內部,你可以斷言結果是你所期望的。

如果您要構建自己的框架,我強烈建議您先考慮一下SimpleTest。與PHP單元相比,它非常輕量級(如果這會讓你感到害怕)。

1

您可以在沒有框架的情況下使用任何語言編寫測試,但是您在測試中共享的代碼將最終成爲一種小型框架。

一個好的單元測試框架將具有讓測試更容易的常見東西,比如斷言,模擬,存根,異常處理和代碼覆蓋。

紅利問題:誰是失敗者?是否有第三個框架值得研究(用於流行的目的)?

有在PHP單元測試空間處下風,例如Enhance PHP,這是建在嘲笑和存根單元測試框架。它擁有的大玩家一定的優勢 - 它具有良好的文檔,非常快速開始。