一:
和其他的Xunit测试框架一样,phpunit框架主要分为以下部分:
TestCase --测试用例
TestSuite --测试套件(我习惯称其为测试用例集)
Assert--断言(我习惯称其为验证方式)
TestResult--测试结果
对于testcase,phpunit中除了一般的testcase,还包含了Incompletetestcase(未完成的)和skiptestcase(跳过的测试用例)。
testcase是单元测试的基本组成部分,每个testcase均包含以下部分:
Setup()---测试前的初始化,执行每个testMethod前均会执行
Teardown()--测试完成后恢复,执行完每个testMethod后均会执行
写phpunit测试脚本时,可以通过phpunit Skeleton 生成单元测试的脚本结构,然后在结构中填写测试用例。
如果不用skeleton生成,自己写也很方便。
phpunit的测试文件包含以下部分:
引入必要的文件
require 'x.php'--被测试的php文件
rquire 'phpunitpath\phpunit\framework'--- phpunit的framewok文件
创建一个从phpunit frame继承的类
class XXtest extends PHPUnit_Framework_TestCase
[初始化公共的参数]
public $para1='';
public $para2='';
写setup和teardown函数
public function setUp() {}
public function tearDown() {}
注意,每运行一个test的函数,均会首先运行setup,每运行完一个函数,均会运行teardown. 写这2个函数时需要注意。
下一步就是写测试函数了,比如测试
public function sum(a,b)
{return a+b;}
写测试函数时和测试用例是对应的,我们首先测试正常情况下求和是否正确,testXX函数可以如下:
public function testSumNormal ()
{
coding....
assertSame(expectresult,actualcode,message)
}
所有的测试函数均已test开头,一般通过assert..验证结果是否正确。
三:
写完单元测试脚 本后,下一步就是执行测试,最简单的命令是:phpunit xxx.php
更加详细的命令如下: phpunit --log-xml(log 文件格式) 文件路径/文件名 --coverage-html(代码覆盖文件格式) 文件路径/文件名 单元测试用例类 单元测试文件 如:
phpunit --log-xml path/createAlbumlog --coverage-html path/logs/ createAlbumtest createAlbum.php
命令执行过程中,.--表示成功,e--代表error, f--代表失败, 执行完成后会显示测试用例成功、失败和出错情况。也可以通过查看log查看测试情况,coverage文件可以查看单
元测试脚本对测试文件代码覆盖率情 况。
四:
自己感觉单元测试过程中需注意以下几个方面:
1、各测试用例(testXXX)的数据耦合度要低。如果耦合度较高的话,如果前一个测试用例失败的话,之后的测试用例会出现error,无法继续。
2、测试用例尽量覆盖各逻辑分支,保证测试覆盖率。
3、测试用例设计和非单元测试的用例设计方法一致,针对一个方法测试需包含:正常测试、异常测试和边界测试等。
4、 合理的利用setUp合tearDown, 每执行一个testXX时,都首先运行setUP,执行完testXX后,都会运行tearDown, 因此可以把各个测试用例开始都需要初始化且初始化值一样的
参数放到setUP中,而执行完后需要unset的参数放到tearDown函数中。
5、用phpunit skelon 生成测试框架时,只有.php文件才可以,测试其他格式的文件如 inc格式文件无法生成的。可以修改文件名后在生成。
和其他的Xunit测试框架一样,phpunit框架主要分为以下部分:
TestCase --测试用例
TestSuite --测试套件(我习惯称其为测试用例集)
Assert--断言(我习惯称其为验证方式)
TestResult--测试结果
对于testcase,phpunit中除了一般的testcase,还包含了Incompletetestcase(未完成的)和skiptestcase(跳过的测试用例)。
testcase是单元测试的基本组成部分,每个testcase均包含以下部分:
Setup()---测试前的初始化,执行每个testMethod前均会执行
Teardown()--测试完成后恢复,执行完每个testMethod后均会执行
testMethod()--测试方法(测试点)
写phpunit测试脚本时,可以通过phpunit Skeleton 生成单元测试的脚本结构,然后在结构中填写测试用例。
如果不用skeleton生成,自己写也很方便。
phpunit的测试文件包含以下部分:
引入必要的文件
require 'x.php'--被测试的php文件
rquire 'phpunitpath\phpunit\framework'--- phpunit的framewok文件
创建一个从phpunit frame继承的类
class XXtest extends PHPUnit_Framework_TestCase
[初始化公共的参数]
public $para1='';
public $para2='';
写setup和teardown函数
public function setUp() {}
public function tearDown() {}
注意,每运行一个test的函数,均会首先运行setup,每运行完一个函数,均会运行teardown. 写这2个函数时需要注意。
下一步就是写测试函数了,比如测试
public function sum(a,b)
{return a+b;}
写测试函数时和测试用例是对应的,我们首先测试正常情况下求和是否正确,testXX函数可以如下:
public function testSumNormal ()
{
coding....
assertSame(expectresult,actualcode,message)
}
所有的测试函数均已test开头,一般通过assert..验证结果是否正确。
三:
写完单元测试脚 本后,下一步就是执行测试,最简单的命令是:phpunit xxx.php
更加详细的命令如下: phpunit --log-xml(log 文件格式) 文件路径/文件名 --coverage-html(代码覆盖文件格式) 文件路径/文件名 单元测试用例类 单元测试文件 如:
phpunit --log-xml path/createAlbumlog --coverage-html path/logs/ createAlbumtest createAlbum.php
命令执行过程中,.--表示成功,e--代表error, f--代表失败, 执行完成后会显示测试用例成功、失败和出错情况。也可以通过查看log查看测试情况,coverage文件可以查看单
元测试脚本对测试文件代码覆盖率情 况。
四:
自己感觉单元测试过程中需注意以下几个方面:
1、各测试用例(testXXX)的数据耦合度要低。如果耦合度较高的话,如果前一个测试用例失败的话,之后的测试用例会出现error,无法继续。
2、测试用例尽量覆盖各逻辑分支,保证测试覆盖率。
3、测试用例设计和非单元测试的用例设计方法一致,针对一个方法测试需包含:正常测试、异常测试和边界测试等。
4、 合理的利用setUp合tearDown, 每执行一个testXX时,都首先运行setUP,执行完testXX后,都会运行tearDown, 因此可以把各个测试用例开始都需要初始化且初始化值一样的
参数放到setUP中,而执行完后需要unset的参数放到tearDown函数中。
5、用phpunit skelon 生成测试框架时,只有.php文件才可以,测试其他格式的文件如 inc格式文件无法生成的。可以修改文件名后在生成。