21

我使用 PHPUnit 进行单元测试,但是当触发致命错误时,脚本会终止,并且我没有正确的 PHPUnit 输出。

我希望 PHPUnit 输出保持正确格式,因为它是由 Eclipse 插件读取的。实际上,致命错误会停止 PHPUnit,并且在 Eclipse 中插件无法解释任何内容(因为 PHPUnit 脚本错误,而不是处理它)。

谢谢

4

2 回答 2

29

您需要使用 PHPUnit 的进程隔离功能 - 在新进程中启动每个测试套件。

phpunit --process-isolation ...

这是确保致命错误不会破坏您的 phpunit 输出的唯一方法。

执行时间处理时间

进程隔离会增加您的测试运行时间,因为对于每个单独的测试,都会启动一个新的 PHP 实例,执行引导程序等。

要修改这种情况,您可以选择在单独的进程中运行完整的测试用例(@runTestsInSeparateProcesses),或者只运行已知有时会致命的单个测试用例(@runInSeparateProcess)。

于 2010-10-01T19:12:27.723 回答
2

set_error_handler() 在那里帮不了你。您可以使用register_shutdown_function()捕获致命错误

于 2010-10-01T18:13:43.323 回答