PHP单元测试工具PHPUnit初体验

发表于:2009-03-30来源:作者:点击数: 标签:PHPUnitphpunit
今天接到了个任务,需要对数字进行计算,因为涉及到整数,小数,和科学计数法等很多条件,所以人工测试非常麻烦,于是想到了PHP的 单元测试 工具 PHPUnit ,所以写个文档备查。 看了PHPUnit的文档之后基本有了一些了解, http://pear.php.net/manual/en/pack

今天接到了个任务,需要对数字进行计算,因为涉及到整数,小数,和科学计数法等很多条件,所以人工测试非常麻烦,于是想到了PHP的单元测试工具PHPUnit,所以写个文档备查。

看了PHPUnit的文档之后基本有了一些了解,
http://pear.php.net/manual/en/packages.php.phpunit.intro.php

工作流程如下:
1.设计你的class/API
2.创建测试程序集
3.实现class/API
4.运行测试

5.修正测试失败或错误,回到第4步。

我们来举个例子:
下面是你要测试的class,其中formatn函数一个取任意数字的5位有效数字的函数。

CODE: ----------format_number.php-----------
class fo {

        function fo() {
        }

        function formatn($num) {
                $num = rtrim($num,"0");
                $pos = strpos($num,".");
                $num = str_replace(".","",$num);
                $count1 = strlen($num);
                $num = ltrim($num,"0");
                $count2 = strlen($num);
                $zeroc = $count1 - $count2;
                $num = substr($num,0,6);
                $num = round($num/10);
                //$num = str_pad($num, 5, "0");
                if ($pos !== false) {
                        $num = str_pad($num, (strlen($num)+$zeroc), "0", STR_PAD_LEFT);
                        $dotl = substr($num,0,$pos);
                        $dotr = substr($num,$pos);
                        $num = $dotl.".".$dotr;
                }
                return $num;
        }

}接着创建TestCase,继承自PHPUnit_TestCase

CODE: ----------testcase.php-----------
<?php

require_once 'format_number.php';
require_once 'PHPUnit.php';

class foTest extends PHPUnit_TestCase &#123;

        //这个成员变量是存放要测试的类引用
        var $abc;

        //构造函数
        function foTest&#40;$name&#41; &#123;
                $this->;PHPUnit_TestCase&#40;$name&#41;;
        &#125;

        //new一个要测试的类为成员变量abc赋值
        function setUp&#40;&#41; &#123;
                $this->;abc = new fo;
        &#125;

        //unset要测试的类
        function tearDown&#40;&#41; &#123;
                unset&#40;$this->;abc&#41;;
        &#125;

       

原文转自:http://www.ltesting.net