php - 是否可以忽略 PHP 中的 fatal error ?

标签 php unit-testing error-handling

我理解术语“ fatal error ”的意义,但我想编写这样的测试类(简化得令人作呕):

class tester {

    function execute() {

        if( @$this->tryit() === true ) return true;
        return false;

    }

    function tryit() {

        $doesntexist = new noobject();
        return true;

    }

}

实际上我有一个 Test 父类,然后类会扩展它并包含一堆方法和一堆测试。父类将定义 execute,它只会运行子类中的每个方法(当然不包括 execute)并收集有关哪些函数通过和哪些函数失败的数据。

我想在实际编写部分代码之前编写测试,但我不想使用 assert,而是想运行 every 测试并生成一个函数列表其中测试类失败。但这意味着如果测试失败,则意味着存在错误——但我还想处理我忘记定义类等的实例。是否可以这样做,同时又不会让整个脚本死掉?

我原以为脚本会一直失败,直到调用前面带有 @ 的函数,然后继续,但显然我错了。有解决方法吗?

最佳答案

fatal error 是致命,您对此无能为力。

解决方案的两个想法可能是:

  • 在尝试调用之前测试该方法是否存在;见method_exists
  • 或者,在单独的进程中运行每个“测试”:这样,如果一个测试导致 fatal error ,则只有与该测试对应的“子”进程死亡,而“父”进程,测试启动器,可以检测到这一点并将其视为失败。

其实第二种解法存在于PHPUnit中从 3.4 版开始,如果我没记错的话 ;-)

关于php - 是否可以忽略 PHP 中的 fatal error ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1926370/

相关文章:

php - 使用主题标签计算推文数量

java - 为什么 Mockito ArgumentCaptor 颠覆泛型

unit-testing - 模拟存储库的插入方法

php - 如何使用 mysqli_multi_query 识别导致错误的查询?

.net - 如何检查LINQ to SQL连接错误

php - Laravel 查询生成器 : error in mysql where clause

javascript - 如何使用表单中的输入变量来更新另一个 php 的图表?

java - 为了单元测试添加 'Getters' 和 'Setters'?

ruby-on-rails - Heroku上的Rails 4中的自定义错误页面

PHP mysqli 更新表中的 blob 值不执行任何操作