PHPUnit简介及使用

1、PHPUnit是什么?

一、它是一款轻量级的PHP测试框架,地址:http://www.phpunit.cnphp

二、手册:http://www.phpunit.cn/manual/5.7/zh_cn/installation.htmlhtml

2、为何要用PHPUnit?

一、能够经过命令操控测试脚本api

二、能够测试性能数组

三、能够测试代码覆盖率app

四、能够自动化的更新测试用例的参数数据框架

五、各类格式的日志函数

3、PHPUnit使用规则

一、 通常被测试类的后面加上”Test”,好比要测试的类为Array,则测试用例的命名为ArrayTest。性能

二、测试类ArrayTest继承于PHPUnit_Framework_TestCase测试

三、测试方法必须为public权限,都是test开头,或者你也能够选择给其加注释@test来代表该函数为测试函数ui

四、经过断言方法来对实际值和预期值进行断言,断言方法能够参照手册:http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.assertions.html

 

快速入门:

class ArrayTest extends PHPUnit_Framework_TestCase 
{
//测试用例运行前初始化
public function setUp(){}

//测试用例运行后执行
public function tearDown(){}
/**
* @test
*/
public function testArrayIsEmpty()
{
$fixture = array();

// 断言数组$fixture中元素的数目是0。
$this->assertEquals(0, sizeof($fixture));
}
/**
* @test
*/
public function testarrayHasKey()
{
$arr = array(
'id'=>666,
'name'=>'zhangsan',
);
//断言$arr是一个数组
$this->assertTrue(is_array($arr));
//断言数组$arr中含有索引id
$this->assertArrayHasKey('id',$arr);
//断言数组$arr中含有索引name
$this->assertArrayHasKey('name',$arr);
}

}

命令行启动测试用例:

phpunit  测试文件名,此处为要测试ArrayTest.php文件

phpunit ArrayTest.php

PHPUnit 5.7.5 by Sebastian Bergmann and contributors.

.. 2 / 2 (100%)

Time: 138 ms, Memory: 3.25MB

OK (2 tests, 4 assertions)

记录测试日志:

日志多种格式http://www.phpunit.cn/manual/5.7/zh_cn/textui.html#textui.clioptions

phpunit ArrayTest.php --log-tap log.txt

TAP version 13
ok 1 - ArrayTest::testArrayIsEmpty
ok 2 - ArrayTest::testarrayHasKey
1..2

4、PHPUnit测试代码覆盖率

能够参考:http://www.phpunit.cn/manual/current/zh_cn/code-coverage-analysis.html

能够经过配置phpunit.xml设置须要测试的代码路径或文件

例如:phpunit.xml的配置(放在项目根目录)

一、经过生成html页面查看代码覆盖率

经过执行命令:phpunit --coverage-html ./coverage ./src/test

命令解释:

  • --coverage-html:生成覆盖率结果的html
  • coverage:html生成目录,能够从新定义
  • ./src/test:测试用例目录(也能够是单个测试用例文件)

覆盖率结果:

能够看到目录里每一个文件的覆盖率:

还能够清晰的看到每个文件代码覆盖率:

二、经过生成的text文件查看代码覆盖率

经过执行命令:phpunit --coverage-text ./src/test > test.log

命令解释:

  • --coverage-html:生成覆盖率结果的text
  • ./src/test:测试用例目录(也能够是单个测试用例文件)
  • > test.log:存放覆盖率结果的文件(文件名称本身定义)

覆盖率结果:

能够清晰的看到总覆盖率和每一个文件的覆盖率。

覆盖率计算问题:

一、类:只有类中全部代码都执行了,覆盖率才为100%;

二、方法:类中的方法每一行都执行了,覆盖率才算100%。例如:类中有5个方法,有两个方法每一行执行了,覆盖率为:40%;

三、行:每一行代码都执行了就是100%;

相关文章
相关标签/搜索