# 对 PHP 错误进行测试

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

>[info] ### 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 警告。

>[info] ### 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

~~~。

php错误测试,对 PHP 错误进行测试相关推荐

  1. 获取预测模型在测试集中预测错误的数据样本

    获取预测模型在测试集中预测错误的数据样本 你构建了预测模型.模型在训练集和测试集的整体效果也比较均衡.而且你也尝试了许多模型进行学习和构建,总是没有达到预期的效果,那么这个时候你可以把模型预测错误的数 ...

  2. idea测试单元错误_不要单元测试错误

    idea测试单元错误 在进入标题主题之前,我们先来看一个简单的编程示例. 在编程任务中,我将演示一些不良的编码样式,并以此为基础,我将更容易解释为什么相同的样式在单元测试中是不良的. 好吧,既然我写了 ...

  3. parasoft Jtest 使用教程:清除错误消息与运行内置测试配置

    2019独角兽企业重金招聘Python工程师标准>>> parasoft Jtest介绍和试用>>> 清除错误消息 目的:演示如何从Jtest视图中清除错误消息. ...

  4. Android项目运行junit测试类时出现错误Internal Error (classFileParser.cpp:3494)的解决办法...

    以前的项目运行好好的,升级了ADT后,进行junit测试时出现错误: # # A fatal error has been detected by the Java Runtime Environme ...

  5. JMeter测试遇到401错误

    JMeter测试遇到401错误: 这是未授权问题 用 F12 打开开发者工具 在network网络 里寻找相关信息: 我们需要在JMeter里配置一下这些信息: 里面添加一个信息头管理器: 主要是Au ...

  6. 7月5日小测试中的错误总结

    7月5日小测试中的错误总结 1. 写出下列程序的运行结果 void func(int a) { switch (a) { case 0: printf("0"); case 1: ...

  7. python语法错误概述_python语法错误

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我是python中的新手,当我想在模块中编译代码时,我遇到语法错误:invail ...

  8. 醉话没有测试(QA)的测试

    周六,深夜,我拖着满是疲倦的身躯,四处闲逛,来到小巷一家还闪着霓虹的酒吧,我略一犹豫走了进去. 酒吧冷冷清清,寥寥几对男女,在昏暗的灯光下切切私语,我没兴趣知道他们在说些什么,懒懒趴在吧台,酒保一脸贼 ...

  9. web服务压力测试)有效的压力测试系统将应用以下这些关键条件

    1)重复(Repetition):最明显的且最容易理解的压力条件就是测试的重复.换句话说,测试的重复就是一遍又一遍地执行某个操作或功能,比如重复调用一个Web 服务.功能验证测试可以用来被弄清楚一个操 ...

  10. 浮躁的国内测试界-2006年测试人员招聘感悟

    浮躁的国内测试界-2006年测试人员招聘感悟 作者:陈大卫 来源:希赛网软件测试频道 我面试的测试应聘人员大多是有一定从业经验的测试人员,其中不乏优秀者,但是也有相当多的应聘人员反映出这样那样的问题, ...

最新文章

  1. myeclipse中配置weblogic的开发环境
  2. Aspose.Pdf 系列组件介绍
  3. cv2.getStructuringElement 学习
  4. SQL Server2008附加数据库之后显示为只读时解决方法
  5. Jenkins邮件配置,实现邮件发送策略(可实现每个Job对应不同的发送邮箱)
  6. hibernate oracle boolean 数据类型,用hibernate向oracle读取blob数据类型为并下载到本地...
  7. 荣耀magic3会用鸿蒙,赵明:荣耀Magic3芯片领先行业,大家看到以后会换掉手机!...
  8. 电子围栏原理解析---原理
  9. 给大忙人们看的 Java NIO 极简教程
  10. Mysql--mysqldump命令 备份数据库
  11. 《30天学习30种新技术》-Day 15:Meteor —— 从零开始创建一个 Web 应用
  12. Java三大特性的理解
  13. 二分法求函数的解(函数零点)
  14. Unity 3D作业七:人物模型
  15. python抢课_python实现强智科技教务系统抢课(两种方法)
  16. python服务器传输wav文件,Python处理wav文件(二进制文件读写)
  17. MySQL基本概念和正确发音(表、列、行、注解等讲解)
  18. 使用Python下载MP3
  19. 深度细节 | Go 的 panic 秘密都在这
  20. MATLAB求分段函数

热门文章

  1. python怎样使用各个日期赤纬_行星的上合、下合、大冲、大距、方照、逆行、合月时间计算...
  2. XUPT 寒假算法集训第一周
  3. 牛客网练习,某公司2017秋招 叫车 2017年
  4. python编写判断素数的函数并找出前五个摩尼森数_五十八、如何对一个数进行分解质因数...
  5. C switch 语句
  6. 网格交易法策略优化-解决单边下跌问题,降低破网率
  7. “逐日之弓”AI 光伏开发大赛培训开启 Imagination解读AI处理器创新应用
  8. 逆变器锁相原理及DSP实现
  9. AtCoder Beginner Contest 214(补题)
  10. beetl 获取html属性值,Beetl2.7.16中文文档(2)之高级功能