在运行PHPUnit测试时,我希望能够转储输出,这样我就可以调试一两件事.
class theTest extends PHPUnit_Framework_TestCase
{
/**
* @outputBuffering disabled
*/
public function testOutput() {
print_r("Hello World");
print "Ping";
echo "Pong";
$out = "Foo";
var_dump($out);
}
}
结果如下:
PHPUnit @package_version@ by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 3.00Mb
OK (1 test, 0 assertions)
请注意,没有预期的输出.
我在2011年9月19日使用了git repos的HEAD版本.
php -version的输出:
$php -version
PHP 5.2.9 (cli) (built: Dec 8 2010 11:36:37)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
有什么我做错了,或者这可能是一个PHPUnit错误?
解决方法:
UPDATE
刚刚意识到另一种方法,它比–verbose命令行选项更好地工作:
class TestSomething extends PHPUnit_Framework_TestCase {
function testSomething() {
$myDebugVar = array(1, 2, 3);
fwrite(STDERR, print_r($myDebugVar, TRUE));
}
}
这使您可以随时将任何内容转储到控制台,而不会出现–verbose CLI选项随附的所有不需要的输出.
正如其他答案所指出的那样,最好使用内置方法测试输出,例如:
$this->expectOutputString('foo');
但是,有时候调侃并在测试用例中看到一次性/临时调试输出是有帮助的.但是,不需要var_dump hack / workaround.这可以通过在运行测试套件时设置–verbose命令行选项轻松完成.例如:
$phpunit --verbose -c phpunit.xml
在CLI环境中运行时,这将显示测试方法内部的输出.
标签:php,unit-testing,phpunit
来源: https://codeday.me/bug/20190923/1814667.html