2012-09-17 69 views

回答

3

這個問題基本上只有一個答案:PHPUnit

這是PHP中最大的測試框架。最佳記錄,大多數用戶,大多數功能,行業標準。你正在尋找的所有東西。 manual is here

對於MVC:編寫可測試代碼與您正在編程的設計模式沒有任何關係。

+0

但我們該怎麼做? –

+0

通過安裝,配置,編寫測試,運行? – Sherlock

+0

okkkkkkkk ........謝謝........ –

2

你可以在沒有任何框架的情況下編寫單元測試,但是你會發現自己寫了大量的概念,你可以從PHPUnitEnhancePHP免費獲得這些概念。

特別是,該框架將有助手,允許你斷言測試,助手給你假使用在你的測試(特別是在你的情況下,如果你使用MVC模式有用)以及運行和顯示結果。

如果您看一下單元測試框架的源代碼,您可以看到所有這些助手的工作原理,學習框架最終比編寫框架更快。

這裏是一個手工測試的例子 - 我們無法測試,如果結果是不正確的,或者如果有一個例外:

$passed = true; 
try { 
    $result = $target->addTwoNumbers(5, 2); 
    $passed = 7 === $result; 
} catch (Exception $e) { 
    $passed = false; 
} 

return $passed; 

當你使用一個框架,這將成爲更可讀:

$result = $target->addTwoNumbers(5, 2); 
Assert::areIdentical(7, $result); 

在這兩個例子中,我省略了代碼來設置測試,即創建$target,因爲它沒有任何意義添加到比較。

2

還有SimpleTest(http://www.simpletest.org/) - 這是一個非常輕。沒有很多其他測試套件的行李。

您還可以使用自動化工具,如硒基本上模仿用戶坐在用鼠標瀏覽過 - 顯然你要訓練它,並指定測試等

2

當然你可以使用PHPUnit的或其他的單元測試構架。我不喜歡爲我的項目添加大量額外代碼的想法,所以我自己編寫了一個單元測試人員。

對於基本的單元測試,你只需要2個PHP文件/類。一個執行實際測試,另一個是unittest的基類。

我寫了一個代碼blog來演示如何做到這一點。單位測試人員可以在行動here中看到。

我認爲,當SO這樣的問題像這樣彈出時,大多數答案是:不要自己動手使用xxx。然而,這帶來了一個懲罰:它會膨脹你的代碼,並使完成的項目更大,更難以維護並依賴於第三方代碼。