php 在线答题如何判断对错,对 PHP 错误进行测试

对 PHP 错误进行测试

默认情况下,PHPUnit 将测试在执行中触发的 PHP 错误、警告、通知都转换为异常。利用这些异常,就可以,比如说,预期测试将触发 PHP 错误,如Example 2.14, “用 @expectedException 来预期 PHP 错误”所示。

Note

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

Example 2.14. 用 @expectedException 来预期 PHP 错误

class ExpectedErrorTest extends PHPUnit_Framework_TestCase

{

/**

* @expectedException PHPUnit_Framework_Error

*/

public function testFailingInclude()

{

include 'not_existing_file.php';

}

}

?>

phpunit -d error_reporting=2 ExpectedErrorTest

PHPUnit 5.0.0 by Sebastian Bergmann and contributors.

.

Time: 0 seconds, Memory: 5.25Mb

OK (1 test, 1 assertion)

PHPUnit_Framework_Error_Notice 和 PHPUnit_Framework_Error_Warning 分别代表 PHP 通知与 PHP 警告。

Note

对异常进行测试是越明确越好的。对太笼统的类进行测试有可能导致不良副作用。因此,不再允许用 @expectedException 或 setExpectedException() 对 Exception 类进行测试。

如果测试依靠会触发错误的 PHP 函数,例如 fopen ,有时候在测试中使用错误抑制符会很有用。通过抑制住错误通知,就能对返回值进行检查,否则错误通知将会导致抛出 PHPUnit_Framework_Error_Notice。

Example 2.15. 对会引发PHP 错误的代码的返回值进行测试

class ErrorSuppressionTest extends PHPUnit_Framework_TestCase

{

public function testFileWriting() {

$writer = new FileWriter;

$this->assertFalse(@$writer->write('/is-not-writeable/file', 'stuff'));

}

}

class FileWriter

{

public function write($file, $content) {

$file = fopen($file, 'w');

if($file == false) {

return false;

}

// ...

}

}

?>

phpunit ErrorSuppressionTest

PHPUnit 5.0.0 by Sebastian Bergmann and contributors.

.

Time: 1 seconds, Memory: 5.25Mb

OK (1 test, 1 assertion)

如果不使用错误抑制符,此测试将会失败,并报告 ~~~

fopen(/is-not-writeable/file): failed to open stream: No such file or directory

~~~。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值