簡體   English   中英

用純PHP進行單元測試

[英]Unit testing in plain PHP

我很好奇我們如何使用普通的PHP中的單元測試來測試代碼。

是他們對此的任何指導方針。

以及使用MVC架構創建網站時如何進行單元測試。

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

它是PHP中最大的測試框架。 記錄最好,用戶最多,功能最多的行業標准。 您想要的一切。 手冊在這里

至於MVC:編寫可測試的代碼與您所使用的設計模式沒有任何關系。

您可以完全不使用任何框架來編寫單元測試,但是您會發現自己正在編寫許多可以從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因為它不會為比較添加任何含義。

還有一個SimpleTest( http://www.simpletest.org/ )-非常輕巧。 卻沒有其他很多測試人員的負擔。

您還可以使用諸如Selenium之類的自動化工具,該工具本質上也模仿用戶坐着鼠標瀏覽-顯然,您必須對其進行培訓並分配測試等。

當然,您可以使用PHPUnit或其他單元測試框架。 我不喜歡在項目中添加很多額外代碼的想法,所以我自己編寫了一個單元測試器。

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

我用代碼編寫了一個博客 ,以演示如何做到這一點。 這里可以看到單元測試器的實際作用。

我的看法是,當SO出現這樣的問題時,大多數答案是:自己不要使用xxx。 但是,這帶來了一個代價:它將使您的代碼膨脹,並使完成的項目更大,更難以維護並且依賴於第三方代碼。

試試這個教程

http://pear.php.net/manual/en/package.php.phpunit.intro.php

最好的方法是使用PHPUnit進行單元測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM