摘要
本文向你介紹測試驅動開發的概念,并用一個簡單的示例項目來做示范。
介紹xml:lang="en-us">
開發PHP產品有很多不同的方法。我們大多數傾向于從一個簡單的腳本開始,逐步向前推進。 或許我們可以預先列出我們的腳本,但是我們往往是停留在開發階段,在需要測試的時候不會真正的去開始測試;旧,我們是先開發后測試。
但是這樣做或許不是最好的辦法,可能會在今后帶來問題。這就是為什么一些開發者提倡一種不同的開發方式,叫做測試驅動開發(TDD)的原因- 就是先測試后開發。
你可能會疑惑這樣該怎么做,而這正是本文將討論的。我將帶領你們通過一個真實的簡單項目去示范TDD如何工作。本文和示例項目都基于Noel Darlow(“McGruff”)在論壇中向另一個論壇成員演示TDD如何工作的討論。
我們的示例項目是一個Biter類,它通過使用正則表達式可以“咬掉”字符串中的片段,就象這樣:
bite ('/pattern/');?>
我們的類也將修改原始的字符串,把匹配的部分去除(所以我們叫它“吞噬者”)。
讓我們從設置測試框架開始。
設置測試框架
由于我們從測試出發,我們需要有一些測試框架。我將使用SimpleTest 框架,僅僅因為我最熟悉它。
下載一份SimpleTest的拷貝,把它安裝在你本機或者你的服務器上。然后創建一個叫做"test_biter.php"的新文件,里面寫下面的代碼:
require_once 'simpletest/unit_tester.php';
require_once 'simpletest/reporter.php';
class BiterTestCase extends UnitTestCase {
function testSetup () {
$this->assertTrue(false);
}
}
$test = new BiterTestCase('TDD Biter Test');
$test->run(new HtmlReporter());
?>
讓我們分析一下這個例子。首先我們包含了一些SimpleTest框架的文件(你要確認一下路徑是否和你的一樣)。接著我們建立了一個叫做 BiterTestCase的新類,它將用來測試我們的Biter類。象你看到的一樣,BiterTestClase類繼承于UnitTestCase 類,這個意味著BiterTestClass是我們第一個真正意義上的測試用例。
BiterTestClass類只有一個方法調用叫做'testSetup'。任何以“test”開頭的方法都會被SimpleTest框架自動執行,因此它們應該是被用來測試項目中的某個部分。在上面的例子中,我們通過調用assertTrue()方法來確認框架被正確設置。
例子中的后面兩行是建立一個測試用例的實例,然后運行所有測試。如果所有設置都正確的話,你會得到下面的輸出:
文章來源于領測軟件測試網 http://www.kjueaiud.com/