先看了一下這個教學:Test-Driven Development in PHP: First Steps及PHPUnit 入門介紹
我常用的IDE是PDT(Eclipse for PHP),不過看起來沒有好的PHPUnit plugin,想想先用用command line方式來處理好了。
Step1. 先建好project目錄
$mkdir php_test_example/hello/test
$cd php_test_example/hello/
Test-Driven program的理念就是先寫測試然後修複測試,一次只修複一個小error。所以
Step2. 建立測試
$touch test/hello_test.php
$vim test/hello_test.php
填入
<?php
class HelloTest extends PHPUnit_Framework_TestCase
{
public function test_echo_hello()
{
$c = new Hello();
$this->assertEquals('hello',$c->echo_hello());
}
}
?>
再來執行測試
$phpunit test/hello_test.php
得到底下的回應
PHPUnit 3.7.28 by Sebastian Bergmann.
PHP Fatal error: Class 'Hello' not found in php_test_example/hello/test/hello_test.php on line 7
ok,沒有Hello這個Class。
Step3. 建立實際要用的程式
$vim test/hello_test.php
在class前加入
require_once 'hello.php';
建立hello.php
$touch hello.php
$vim hello.php
填入
<?php
class Hello
{
}
?>
再次執行$phpunit test/hello_test.php
這次回應變成
PHPUnit 3.7.28 by Sebastian Bergmann.
PHP Fatal error: Call to undefined method Hello::echo_hello() in php_test_example/hello/test/hello_test.php on line 10
Step4. 修正錯誤
<?php
class Hello
{
function echo_hello()
{
}
}
?>
這邊故意沒加入回傳hello,再次執行
$phpunit test/hello_test.php
回應變成
PHPUnit 3.7.28 by Sebastian Bergmann.
F
Time: 27 ms, Memory: 2.50Mb
There was 1 failure:
1) HelloTest::test_echo_hello
Failed asserting that null matches expected 'hello'.
php_test_example/hello/test/hello_test.php:10
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
嘖嘖,果然查出有錯。再重覆這步驟,修正為
再次執行
這次就成功啦~!!
大概流程就這樣,實際花不到3分鐘的時間做完。再來就要來試試WordPress上的測試啦,哈哈
參考網址
The session: Test-Driven PHP
It’s Time To Dig In
The Newbie’s Guide to Test-Driven Development
<?php
class Hello
{
function echo_hello()
{
return 'hello';
}
}
?>
再次執行
$phpunit test/hello_test.php
這次就成功啦~!!
PHPUnit 3.7.28 by Sebastian Bergmann.
.
Time: 16 ms, Memory: 2.25Mb
OK (1 test, 1 assertion)
大概流程就這樣,實際花不到3分鐘的時間做完。再來就要來試試WordPress上的測試啦,哈哈
參考網址
The session: Test-Driven PHP
It’s Time To Dig In
The Newbie’s Guide to Test-Driven Development
沒有留言:
張貼留言