代码改变世界

php 单元测试

2013-04-23 19:14  掸尘  阅读(6360)  评论(0编辑  收藏  举报

  前几天把个人上半年计划拿出来看了一下,有学习单元测试的内容,今天没什么事情,就看了一下phpunit!安装phpunit是件很蛋疼事情,尤其在window下面,记得当初费了很大劲才装上,这里就不介绍怎么装的了,你可以去百度一下,首先装上pear,再装phpunit。

  装好了phpunit,可以写个例子练习!

require_once 'PHPUnit/Framework/TestCase.php';


/**
* test
*/
class TestAdd extends PHPUnit_Framework_TestCase 
{
    /**
    *
    */
    public function setUp()
    {
        parent::setUp();
        
    }
    
    public function tearDown()
    {
        parent::tearDown();
    }
    
    public function testTrue() 
    {
        $this->assertContains('baz', 'foobar');
    }
    
    public function testFloat()
    {
        $this->assertEquals(1.0, 1.2, '相等', 0.2);
    }

 setup 可以在里面初始化一些变量,tearDown 是测试完后,释放setUp里面变量所占的内存! assertEquals 是个很常用的方法!

assertEquals(mixed $expected, mixed $actual[, string  $message = '']) 第一个是期望的值,第二是实际的值。你看的我们上面例子,在比较浮点数的时候,

assertEquals(float $expected, float $actual[, string $message = '', float $delta = 0]),有个$delta ,这个参数的意思是我们期望值和实际值的差的最大值,如果小于$delta 则视为通过。其他的判断方式可以到 http://www.phpunit.de/manual/current/en/  去查找

上面通过命令行输出:

 

第一个"F"表示失败,第二个"." 表示通过!

 集成测试

  你一下测试一个项目所有的测试文件,而不是单个测试! 你可以通过 继承 PHPUnit_Framework_TestSuite来实现

require_once 'TestAdd.php';
require_once 'TestArray.php';
/**
* test
*/
class TestSuite extends PHPUnit_Framework_TestSuite 
{
    public function __construct() 
    {
        $this->setName('testSuite');
        $this->addTestSuite('TestAdd');
        $this->addTestSuite('TestArray');
    }
    public static function suite()
    {
        return new self();
    }
}

 这样就可以测试 TestAdd.php和TestArray 文件了! phpunit 里面很多内容,大多数用不到!