在PHPUnit测试执行期间隐藏输出

时间:2015-07-30 07:33:52

标签: php testing phpunit

我的php代码中有一些var_dump(我知道最后一定没有,但仍然是),并且在测试运行时,它们向控制台输出非必要的信息,是否有一种忽略某些代码执行的方法?

我试过

/**
 * @codeCoverageIgnore
 */

// @codeCoverageIgnoreStart
print '*';
// @codeCoverageIgnoreEnd

但这只是忽略了覆盖范围,仍然执行代码。

2 个答案:

答案 0 :(得分:12)

您可以将setOutputCallback设置为不执行任何操作。其效果是抑制测试或测试类中打印的任何输出。

例如:

namespace Acme\DemoBundle\Tests;


class NoOutputTest extends \PHPUnit_Framework_TestCase {

    public function testSuppressedOutput()
    {
        // Suppress  output to console
        $this->setOutputCallback(function() {});
        print '*';
        $this->assertFalse(false, "Don't see the *");
    }

}

您可以在doc

中找到一些参考

希望这个帮助

答案 1 :(得分:0)

我不知道这是一种好的风格,但我这样做:

ob_start();
echo 200;
$output = ob_get_clean();