首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >忽略PHPUnit中的PHP警告

忽略PHPUnit中的PHP警告
EN

Stack Overflow用户
提问于 2011-12-07 17:09:16
回答 2查看 31.3K关注 0票数 25

我使用PHPUnit对我的函数进行单元测试当代码中出现任何警告时,测试脚本将不会对该函数执行,谁能告诉我如何忽略这些警告并继续测试

EN

回答 2

Stack Overflow用户

发布于 2016-04-10 08:22:48

在每个测试级别执行此操作的有文档记录的策略是,当您的测试调用将触发警告或通知的函数时,使用@错误抑制操作符。

下面的代码是来自PHPUnit documentation的示例

代码语言:javascript
复制
<?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;
        }
        // ...
    }
}
票数 4
EN

Stack Overflow用户

发布于 2019-08-14 17:30:36

你不应该忽视警告,它们的存在是有原因的。话虽如此,警告和通知并不是致命的(如果它们是致命的,那么它们将是一个错误)。

您应该在单元测试中测试它,而不是忽略该警告。您可以使用Netsilik/BaseTestCase (麻省理工学院许可证)来执行此操作。使用此PHPUnit扩展,您可以直接测试触发的错误/警告,而无需将其转换为异常:

composer require netsilik/base-test-case

测试E_USER_NOTICE

代码语言:javascript
复制
<?php
namespace Tests;

class MyTestCase extends \Netsilik\Testing\BaseTestCase
{
    /**
     * {@inheritDoc}
     */
    public function __construct($name = null, array $data = [], $dataName = '')
    {
        parent::__construct($name, $data, $dataName);

        $this->_convertNoticesToExceptions  = false;
        $this->_convertWarningsToExceptions = false;
        $this->_convertErrorsToExceptions   = true;
    }

    public function test_whenNoticeTriggered_weCanTestForIt()
    {
        $foo = new Foo();
        $foo->bar();

        self::assertErrorTriggered(E_USER_NOTICE, 'The warning string');
    }
}

希望这对将来的人有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8412746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档