phpunit 一些小发现

一、默认情况下,PHPUnit将测试在执行中触发的PHP错误、警告、通知都转换为异常,所以在这样的情况下,单元测试就会终止。当程序不能保证没有Notice时,又想单元测试可以顺利执行的话,可以修改配置文件phpunit.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
< phpunit  backupGlobals = "true"
backupStaticAttributes = "false"
cacheTokens = "false"
colors = "false"
convertErrorsToExceptions = "true"
convertNoticesToExceptions = "true"
convertWarningsToExceptions = "true"
forceCoversAnnotation = "false"
mapTestClassNameToCoveredClassName = "false"
printerClass = "PHPUnit_TextUI_ResultPrinter"
processIsolation = "false"
stopOnError = "false"
stopOnFailure = "false"
stopOnIncomplete = "false"
stopOnSkipped = "false"
testSuiteLoaderClass = "PHPUnit_Runner_StandardTestSuiteLoader"
timeoutForSmallTests = "1"
timeoutForMediumTests = "10"
timeoutForLargeTests = "60"
strict = "false"
verbose = "false" >
</ phpunit >

将convertNoticesToExceptions设为false可以禁用此功能,还有convertWarningsToExceptions

这些选项都是在命令行选项里无法修改的,当执行的时候可以使用phpunit-cphpunit.xml来指定配置选项。


二、对PHP错误进行测试


1
2
3
4
5
6
7
8
9
10
11
12
<?php
class  ExpectedErrorTest  extends  PHPUnit_Framework_TestCase
{
/**
* @expectedException PHPUnit_Framework_Error
*/
public  function  testFailingInclude()
{
include  'not_existing_file.php' ;
}
}
?>

执行结果

1
2
3
4
5
phpunit -d error_reporting=2 ExpectedErrorTest
PHPUnit 3.8.0 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 5.25Mb
OK (1  test , 1 assertion)


注意

PHP的error_reporting运行时配置会对PHPUnit将哪些错误转换为异常有所限制。如果在这个特性上碰到问题,请确认PHP的配置中没有抑制想要测试的错误类型。


三、对异常进行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
class  ExceptionTest  extends  PHPUnit_Framework_TestCase {
public  function  testException() {
try  {
// ... 预期会引发异常的代码 ...
}
 
catch  (InvalidArgumentException  $expected ) {
return ;
}
 
$this ->fail( '预期的异常未出现。' );
}
}
?>

当预期会引发异常的代码并没有引发异常时,后面对fail()的调用将会中止测试,并通告测试有问题。如果预期的异常出现了,将执行catch代码块,测试将会成功结束。




















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1300198,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值