gpt4 book ai didi

php - 如何使用 PHPUnit 测试命令行程序?

转载 作者:行者123 更新时间:2023-12-03 10:02:58 25 4
gpt4 key购买 nike

如何使用 PHPUnit 测试命令行程序?我看到很多关于从命令行使用 PHPUnit 的帮助,但没有看到使用 PHPUnit 测试命令行程序本身的帮助。

出现这种情况是因为我正在用 PHP 和 Joomla 编写命令行程序,但没有看到测试其输出的方法,尤其是在发生错误时(因为您无法使用 PHPUnit 的 expectOutputString() 测试错误输出)。

(编辑:请注意,我的大部分代码已经在 PHPUnit 测试的类中——我正在寻找一种方法来测试命令行(包装器)程序的逻辑。)

最佳答案

一种方法是使用反引号运算符 (`) 来捕获程序的输出,然后检查该输出。这在 Unix/Linux 风格的操作系统下运行良好,因为您还可以捕获错误输出,如 STDERR。 (在 Windows 下比较痛苦,但可以做到(尤其是使用 Cygwin)。)

例如:

public function testHelp()
{
$output = `./add-event --help 2>&1`;
$this->assertRegExp( '/^usage:/m', $output, 'no help message?' );
$this->assertRegExp( '/where:/m', $output, 'no help message?' );
$this->assertNotRegExp( '/where event types are:/m', $output, 'no help message?' );
}

您可以看到 STDOUT 和 STDERR 都被捕获到 $output 中,然后使用正则表达式断言来测试输出是否与正确的输出相似。

关于php - 如何使用 PHPUnit 测试命令行程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com