PHP单元测试利器 PHPUNIT深入用法(二)
作者:bea
1、markTestSkipped和markTestIncomplete 在phpunit中,有两个有用的方法markTestSkipped和markTestIncomplete。它们能允许你编写的单元测试中不单是只有通过和失败两种结果。markTestSkipped能让PHPUNIT不去执行某个已经编写好的测试方法。举个例子说明,比如下面的程序: #div_code img{border:0px;} Code highlighting produced by
1、markTestSkipped和markTestIncomplete
在phpunit中,有两个有用的方法markTestSkipped和markTestIncomplete。它们能允许你编写的单元测试中不单是只有通过和失败两种结果。markTestSkipped能让PHPUNIT不去执行某个已经编写好的测试方法。举个例子说明,比如下面的程序:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
public
function
testThisMightHaveADb(){
$myObject
->
createObject();
try
{
$db
=
new
Database();
$this
->
assertTrue(
$db
->
rowExists()); }
catch
(DatabseException
$e
) {
$this
->
markTestSkipped(
'
This test was skipped because there was a database problem
'
); }}
?>
在上面的程序中,是一个连接数据库后,判断数据是否存在的测试方法,但如果考虑数据库的连接异常的话,则应该在抛出异常时,使用markTestSkipped指出该测试方法应该是被忽略的,因为出现了异常,而注意的时,此时有可能你写的代码是正确的,只不过是出现了异常而已,这样phpunit在输出时就不会只是简单的输出fail。
而markTestIncomplete也有点类似,但有点不同的是,它是当开发者在编写一个未完成的测试方法时使用的,标记出某个测试方法还没编写完成,同样测试结果也不会是fail,只是告诉phpunit这个测试方法还没编写完成而已,例子如下:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
public
function
testAreNotEnoughHours(){
$this
->
markTestIncomplete(
"
There aren't enough hours in the day to have my tests go green
"
);
$trueVariable
=
true
;
$this
->
assertTrue(
$trueVariable
);}
?>
2、更深入了解phpunit中的断言
在上一篇文章中,已经基本讲解了一些基本的phpunit中的断言的使用,这里以一个例子,下面是一个类的代码:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
class
Testable{
public
$trueProperty
=
true
;
public
$resetMe
=
true
;
public
$testArray
=
array
(
'
first key
'
=>
1
,
'
second key
'
=>
2
);
private
$testString
=
"
I do love me some strings
"
;
public
function
__construct() { }
public
function
addValues(
$valueOne
,
$valueTwo
) {
return
$valueOne
+
$valueTwo
; }
public
function
getTestString() {
return
$this
->
testString; }}
?>
我们编写的单元测试代码初步的框架如下:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
class
TestableTest
extends
PHPUnit_Framework_TestCase{
private
$_testable
=
null
;
public
function
setUp() {
$this
->
_testable
=
new
Testable(); }
public
function
tearDown() {
$this
->
_testable
=
null
; }
/*
* test methods will go here
*/
}
?>
在上一篇文章中,已经介绍了setUp方法和tearDown方法,这里的setUp方法中,建立了Testable()实例并保存在变量$_testable中,而在tearDown方法中,销毁了该对象。
接下来,开始编写一些断言去测试,首先看assertTrue和assertFalase:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
public
function
testTruePropertyIsTrue(){
$this
->
assertTrue(
$this
->
_testable
->
trueProperty
,
"
trueProperty isn't true
"
);}
public
function
testTruePropertyIsFalse(){
$this
->
assertFalse(
$this
->
_testable
->
trueProperty
,
"
trueProperty isn't false
"
);}
?>
1
2
下一页
阅读全文
有用 | 无用
在phpunit中,有两个有用的方法markTestSkipped和markTestIncomplete。它们能允许你编写的单元测试中不单是只有通过和失败两种结果。markTestSkipped能让PHPUNIT不去执行某个已经编写好的测试方法。举个例子说明,比如下面的程序:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
public
function
testThisMightHaveADb(){
$myObject
->
createObject();
try
{
$db
=
new
Database();
$this
->
assertTrue(
$db
->
rowExists()); }
catch
(DatabseException
$e
) {
$this
->
markTestSkipped(
'
This test was skipped because there was a database problem
'
); }}
?>
在上面的程序中,是一个连接数据库后,判断数据是否存在的测试方法,但如果考虑数据库的连接异常的话,则应该在抛出异常时,使用markTestSkipped指出该测试方法应该是被忽略的,因为出现了异常,而注意的时,此时有可能你写的代码是正确的,只不过是出现了异常而已,这样phpunit在输出时就不会只是简单的输出fail。
而markTestIncomplete也有点类似,但有点不同的是,它是当开发者在编写一个未完成的测试方法时使用的,标记出某个测试方法还没编写完成,同样测试结果也不会是fail,只是告诉phpunit这个测试方法还没编写完成而已,例子如下:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
public
function
testAreNotEnoughHours(){
$this
->
markTestIncomplete(
"
There aren't enough hours in the day to have my tests go green
"
);
$trueVariable
=
true
;
$this
->
assertTrue(
$trueVariable
);}
?>
2、更深入了解phpunit中的断言
在上一篇文章中,已经基本讲解了一些基本的phpunit中的断言的使用,这里以一个例子,下面是一个类的代码:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
class
Testable{
public
$trueProperty
=
true
;
public
$resetMe
=
true
;
public
$testArray
=
array
(
'
first key
'
=>
1
,
'
second key
'
=>
2
);
private
$testString
=
"
I do love me some strings
"
;
public
function
__construct() { }
public
function
addValues(
$valueOne
,
$valueTwo
) {
return
$valueOne
+
$valueTwo
; }
public
function
getTestString() {
return
$this
->
testString; }}
?>
我们编写的单元测试代码初步的框架如下:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
class
TestableTest
extends
PHPUnit_Framework_TestCase{
private
$_testable
=
null
;
public
function
setUp() {
$this
->
_testable
=
new
Testable(); }
public
function
tearDown() {
$this
->
_testable
=
null
; }
/*
* test methods will go here
*/
}
?>
在上一篇文章中,已经介绍了setUp方法和tearDown方法,这里的setUp方法中,建立了Testable()实例并保存在变量$_testable中,而在tearDown方法中,销毁了该对象。
接下来,开始编写一些断言去测试,首先看assertTrue和assertFalase:
#div_code img{border:0px;}
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
<?
php
public
function
testTruePropertyIsTrue(){
$this
->
assertTrue(
$this
->
_testable
->
trueProperty
,
"
trueProperty isn't true
"
);}
public
function
testTruePropertyIsFalse(){
$this
->
assertFalse(
$this
->
_testable
->
trueProperty
,
"
trueProperty isn't false
"
);}
?>
1
2
下一页
阅读全文
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- php函数之子字符串替换 str_replace
- php expects parameter 1 to be resource, array given 错误
- php去掉字符串的最后一个字符附substr()的用法
- PHPUnit PHP测试框架安装方法
- 开启CURL扩展,让服务器支持PHP curl函数(远程采集)
- windows下开发并编译PHP扩展的方法
- WordPress判断用户是否登录的代码
- 用php的ob_start来生成静态页面的方法分析
- PHP用GD库生成高质量的缩略图片
- php GeoIP的使用教程
- 让PHP COOKIE立即生效,不用刷新就可以使用
- 通过JavaScript或PHP检测Android设备的代码
- PHP中uploaded_files函数使用方法详解
- PHP $_FILES函数详解
- PHP中for与foreach的区别分析
- php模板中出现空行解决方法
- 在MongoDB中模拟Auto Increment的php代码
- PHP数组交集的优化代码分析
- PHP单元测试利器 PHPUNIT深入用法(三)