系统环境:LInux-elementary os
pear channel-discover pear.phpunit.de
pear remote-list -c phpunit
pear install phpunit/PHPUnit
在编写测试用例时,要遵守如下的phpunit的规则:
1 一般地,在测试用例中,可以扩展PHPUnit_Framework_TestCase类,这样就可以使用象setUp(),tearDown()等方法了。
2 测试用例的名字最好是使用约定俗成的格式,即在被测试类的后面加上”Test”,比如要测试的类为RemoteConnect,则测试用例的命名为RemoteConnectTest。
3 在一个测试用例中的所有的测试方法,在命名时都应该以test+测试方法名去命名,如testDoesLikeWaffles(),要注意的是该方法必须是声明为public类型的。当然可以在你的测试用例中包含private的方法,但它们不能被phpunit所调用。
4 测试方法中是不能接收参数的。
编写第一个单元测试用例,创建文件HelloTest.php,内容如下:
<?php class HelloTest extends PHPUnit_Framework_TestCase{ //用户初始化环境,类似构造函数 public function setUp(){} //清理环境,类似析构函数 public function tearDown(){} /** * 如果存在@test标签,即使方法名不是以test开头,也可以被PHPUnit识别 * 判断值是否相等 * @test */ public function testEqual(){ $a = 2014; $this->assertEquals($a, 2014); } }
在终端下输入:phpunit HelloTest
输出如下:
.
Time: 272 ms, Memory: 2.25Mb
OK (1 test, 1 assertion)
表示测试通过
如果把$a的值改为2013,将不会通过测试,输出如下:
F //表示错误
Time: 239 ms, Memory: 2.25Mb
There was 1 failure:
1) HelloTest::testEqual
Failed asserting that 2014 matches expected 2013.
/tmp/HelloTest.php:15
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
常用断言如下:
AssertTrue/AssertFalse 断言是否为真值还是假
AssertEquals 判断输出是否和预期的相等
AssertGreaterThan 断言结果是否大于某个值,同样的也有LessThan(小于),GreaterThanOrEqual(大于等于),
LessThanOrEqual(小于等于).
AssertContains 判断输入是否包含指定的值
AssertType 判断是否属于指定类型
AssertNull 判断是否为空值
AssertFileExists 判断文件是否存在
AssertRegExp 根据正则表达式判断