PHPUnit 基本使用
来源:互联网 发布:event js drag 编辑:程序博客网 时间:2024/06/01 07:36
以下都是在windows下进行,我的php版本是php-5.1.4-win32
因为phpunit要通过pear安装,所以首先要安装pear
找到php的目录下有一个go-pear.bat,双击运行,提示你安装系统级别的还是一个本地拷贝,直接回车,定制安装目录,选择默认即可,直接回车。程序会自动从网站上下载所需要的文件,过一会就提示你安装好了。
安装好pear后,在php的目录下发现有一个pear.bat,这个是pear安装包用的程序,
在命令行进行php目录,输入 pear install phpunit2
即可,安装完成。
在php目录下会生成一个phpunit.bat,这个是命令行下的测试命令。
我们可以把他复制到我们要测试程序的目录下面。
在命令行下输入 phpunit sampleTest
就是对sampleTest这个case进行测试了。
有二点需要注意的地方:
phpunit需要pear的benchmark包,所以要安装 pear install benchmark即可。
在windows下安装完成后还不能直接进行测试,运行测试程序时会出现 'php'不是内部或外部命令,也不是可运行的程序。的错误,经我一路跟踪,最后在PHPUnit2/Util/Fileloader.php这个文件里找到了问题所在,这个文件是载入测试文件用的,同时使用php解释器进行了语法检查,shell_exec('php -l ' . escapeshellarg($filename));,而我的php.exe并没有在系统的path中,所以出现了上述问题,一种办法是将$output到include之前的代码全部注释掉,这样就不用语法检查了,还有一种办法就是在系统path中加入php的安装目录。
搞单元测试的大概步骤是:编写待测试类,编写测试用例类,编写测试类,测试。
单元测试首先就是要安装测试的类库了,用pear安装PHPUnit,window下这样操作,首先安装pear,在pear下发现phpunit的频道pear channel-discover pear.phpunit.de,然后安装之pear install phpunit/PHPUnit(使用这条指令,将不会完全安装PHPUnit的所有元素,请使用pear install --alldepsphpunit/PHPUnit),这时在php\pear会有PHPUnit.php和PHPUnit文件夹,这样就安装好了。
首先编写待测试类,这里用一个计算器作为例子,计算器类为代码一: 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->o = new calculator(); } //最后消亡的时候清除掉这个类 function tearDown() { unset($this->o); } function testadd() { $r = $this->o->add(1,2); $e = 5; //assertEquals和assertTrue基本一样,不过这个返回的参数更加详细 //这里的1+2肯定等于3,我们故意写错看下他的反应。注意这里是故意写错,实际测试时,这些结果必须是完全正确的,因为它的功能就是检测类方法是否正确。 $this->assertEquals($r,$e); } function testadd2() { $r = $this->o->add(102,106); $e = 208; $this->assertTrue($r == $e); } } 最后编写测试类,不编写这个类也可以,在命令行下直接跑phpunitcalculatorTest就行。 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就可以了
- PHPUnit 基本使用
- PHPUnit学习笔记(二)PHPUnit基本用法
- 【phpunit】phpunit初次安装使用简记
- NetBeans 使用phpunit单元测试
- 使用 PHPUnit 进行测试
- PHPUnit 安装和使用
- 使用Pear安装PHPUnit
- PHPUnit使用详解
- 开始使用PHPUnit
- PHPUnit的使用
- PHP教程:PHPUnit学习笔记(二)PHPUnit基本用法
- PHPunit
- phpunit
- phpunit菜鸟之初次使用
- PHPUnit的安装与使用
- phpunit使用(项目中)
- composer安装phpunit并使用
- composer安装phpunit并使用
- 回顾总结:Java中抽象类与抽象方法
- linux内核编译错误:“include/asm is a directory but a symlink was expected ”
- 微軟将弃用 System.Data.OracleClient
- CentOS网络配置
- DOS Batch - Function Tutorial
- PHPUnit 基本使用
- 请问EL表达式怎么调用方法啊,特别是需要传递参数的方法?
- yield 用法说明
- POJ 2533 Longest Ordered Subsequence DP(LIS)
- 动态加载javascript文件
- Android的垃圾回收机制(android refbase类(sp wp))
- 一个人的北邮考研经历
- 测试Java控制台输入输出流
- Java面向对象高级