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,如需转载请自行联系原作者

相关文章
|
11月前
|
Shell PHP Windows
php的SAPI,CLI SAPI,CGI SAPI
php的SAPI,CLI SAPI,CGI SAPI
|
PHP
【php53-common conflicts with php-common】
【php53-common conflicts with php-common】
58 0
uiz
|
PHP
安装yaf遇到的坑
小白的私人笔记,纯属瞎记
uiz
1964 0
|
关系型数据库 PHP MySQL