单元测试 PHPUnit 简单使用

本文URL:http://blog.sina.com.cn/s/blog_449a63060100kl34.html

搞单元测试的大概步骤是:编写待测试类,编写测试用例类,编写测试类,测试。

单元测试首先就是要安装测试的类库了,用pear安装PHPUnitwindow下这样操作,首先安装pear,在pear下发现phpunit的频道pear channel-discover pear.phpunit.de,然后安装之pear install phpunit/PHPUnit(使用这条指令,将不会完全安装PHPUnit的所有元素,请使用pear install --alldeps phpunit/PHPUnit,这时在php\pear会有PHPUnit.phpPHPUnit文件夹,这样就安装好了。

首先编写待测试类,这里用一个计算器作为例子,计算器类为代码一:

 
class calculator{ 
    function 
add($p1,$p2) 
    { 
        return 
$p1+$p2; 
    } 
} 

编写测试用例类,这个类引入了PHPUnit.php和待测试的计算器类,然后初始化待测试类,编写断言。
 
    
require_once("c8-2.php"); 
    require_once(
"PHPUnit.php"); 

    class 
calculatorTest extends PHPUnit_TestCase 
    
{ 
        public 
$o; 
        
//开始的时候初始化一个待测试类 
        
function setUp() 
        { 
            
$this->new calculator(); 
        } 
        
//最后消亡的时候清除掉这个类 
        
function tearDown() { 
                unset(
$this->o); 
        } 
        function 
testadd() 
        { 
            
$r $this->o->add(1,2); 
            
$e 5; 
            
//assertEqualsassertTrue基本一样,不过这个返回的参数更加详细 
            //
这里的1+2肯定等于3,我们故意写错看下他的反应。注意这里是故意写错,实际测试时,这些结果必须是完全正确的,因为它的功能就是检测类方法是否正确。 
            
$this->assertEquals($r,$e); 
        } 
        function 
testadd2() 
        { 
            
$r $this->o->add(102,106); 
            
$e 208; 
            
$this->assertTrue($r == $e); 
        } 
         
    } 

最后编写测试类,不编写这个类也可以,在命令行下直接跑phpunit calculatorTest就行。

 
    
require_once("testc8-2.php"); 
    require_once(
"PHPUnit.php"); 
    
//载入测试用例 
    
$s new PHPUnit_TestSuite("calculatorTest"); 
    
//测试 
    
$r PHPUnit::run($s); 
    
//测试结果 
    
echo $r->toString(); 
    
//print_r($r); 

跑一边这个测试类就可以了,它输出了测试用例中所有的测试结果。如果你有多个类,多个测试类的test类,那么可以编写一个AllTests套件。包含所有的待测试的测试类,然后在phpunit下统一执行就行。这个类可能是这样的:

<?php  
require_once 'PHPUnit/Framework.php'
require_once 
'PHPUnit/TextUI/TestRunner.php'; //这里引入了这个文件 

require_once 
'DemoTest.php' //引入了两个测试类
require_once 
'calculatortest.php'

class 
AllTests 
public static function 
main() 
PHPUnit_TextUI_TestRunner::run(self::suite()); 


public static function 
suite() 
$suite new PHPUnit_Framework_TestSuite('Zend Framework Zend'); 
$suite->addTestSuite('DemoTest'); //最佳测试类
$suite->addTestSuite('calculatortest'); 
return 
$suite

在命令行执行phpunit alltests 就可以了

posted @ 2011-08-13 11:37  codewei  阅读(439)  评论(0)    收藏  举报