我使用 PHPUnit 进行单元测试,但是当触发致命错误时,脚本会终止,并且我没有正确的 PHPUnit 输出。
我希望 PHPUnit 输出保持正确格式,因为它是由 Eclipse 插件读取的。实际上,致命错误会停止 PHPUnit,并且在 Eclipse 中插件无法解释任何内容(因为 PHPUnit 脚本有错误,而不是处理它)。
谢谢
我使用 PHPUnit 进行单元测试,但是当触发致命错误时,脚本会终止,并且我没有正确的 PHPUnit 输出。
我希望 PHPUnit 输出保持正确格式,因为它是由 Eclipse 插件读取的。实际上,致命错误会停止 PHPUnit,并且在 Eclipse 中插件无法解释任何内容(因为 PHPUnit 脚本有错误,而不是处理它)。
谢谢
您需要使用 PHPUnit 的进程隔离功能 - 在新进程中启动每个测试套件。
phpunit --process-isolation ...
这是确保致命错误不会破坏您的 phpunit 输出的唯一方法。
进程隔离会增加您的测试运行时间,因为对于每个单独的测试,都会启动一个新的 PHP 实例,执行引导程序等。
要修改这种情况,您可以选择在单独的进程中运行完整的测试用例(@runTestsInSeparateProcesses
),或者只运行已知有时会致命的单个测试用例(@runInSeparateProcess
)。
set_error_handler() 在那里帮不了你。您可以使用register_shutdown_function()捕获致命错误