PHP的测试驱动开发

Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead.
--Martin Fowler

正确的测试代码可以很大程度的保证生产代码的可靠性,TDD规范要求开发者在编写生产代码之前先为其接口编写测试。这样可以保证在产品需求不变的前提下稳步推进开发进程,避免潜在BUG,同时也不必担心在改代码的过程中影响该代码其他的调用者。有测试代码为你保驾护航那么就请大胆的重构吧,TDD保证你的代码整天干爽。从此,我们终于告别坑爹的队员,告别客户的夺命连环call,程序员们可以睡个好觉了。所以还有什么理由向这样可爱的开发方式说不呢,现在就开始吧。

PHP最知名的测试框架PHPUnit完整的复制了JUnit3的实现方式,如果你了解JUnit,那基本可以直接上手了.
PHPUnit

代码顺利通过测试了,不过当测试代码越来越多以后,要挨个执行测试还是比较麻烦的,别担心,phpunit提供了测试套件帮助你完美解决这个问题。以下是一个简单测试套件的例子:

/**                  
* 我的测试套件
*/
class suite extends PHPUnit2_Framework_TestSuite {
                       
	public function __construct(){
 	   $testFiles = array(
  	      'IndexTest.php', //首页
  	      'UserTest.php', //用户管理
  	   );  
   	   $this->addTestFiles( $testFiles );
	}   
                       
	public static function suite() {
 	   //最后一定得返回PHPUnit_Framework_TestSuite对像
  	  return new self();
	}   
}

这样,只需要执行一句: phpunit suit.php 即可完成所有测试套件中的测试了,大功告成。

Martin Fowler

  • From 马大叔的个人博客
Show Comments