【问题标题】:PHPunit Symfony exits 255 without --process-isolationPHPunit Symfony 在没有 --process-isolation 的情况下退出 255
【发布时间】:2017-11-12 11:50:23
【问题描述】:

我有一个 Symfony 3 应用程序,我正在尝试使用 PHPunit 运行功能测试,我在每个测试中加载固定装置。

目前,测试将以 255 的代码静默失败,没有关于失败原因的输出或日​​志。即使我已经用尽了所有可能的 PHP 配置来尝试让它输出更多信息。

如果我自己运行失败的测试,它会通过。 如果我一次运行整个套件,它将失败。 如果我删除失败的测试,之后的测试仍然会失败。

它通过的唯一方法是使用 --process-isolation 标志,但这会显着减慢测试速度。

相关的 php.ini 配置:

memory_limit = -1
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On

有没有人遇到过类似的问题并且可能知道解决方案?

【问题讨论】:

  • PHPUnit 可能会返回错误代码但没有任何输出。例如,当自动加载器找不到类时,就会发生这种情况。当您将 log_errors 选项设置为 On 时,您应该查看系统日志以查找来自 PHP 的错误消息。
  • log_errors 文件中没有任何内容 :(
  • 我添加了一个答案,因为我已经遇到了这个问题。
  • 需要澄清一下:您写了“测试将静默失败,代码为 255”。说一个测试 failing 意味着测试运行但断言没有被验证。我想你会说“测试套件不会运行返回 255 错误代码并且没有任何输出”。所以,如果你没有得到任何输出,你怎么知道是哪个测试导致了崩溃(正如你所写的“如果我自己运行失败的测试,它会通过。”)?
  • 例如:如果我有 20 个测试,PHPUnit 将运行到第 10 个测试并退出 255。如果我删除第 10 个测试,它仍然会在同一点退出 255。跨度>

标签: php symfony unit-testing phpunit


【解决方案1】:

PHPUnit 可能会返回错误代码但没有任何输出。当发生 PHP 错误并且错误未配置为显示时会发生这种情况。

当您将 log_errors 指令设置为 On 时,您应该查看系统日志以查找来自 PHP 的错误消息。

如果日志为空

首先,您必须检查您希望加载的php.ini 文件是否正确。

根据您的系统,PHP 可能会加载 a different configuration file for CGI/CLI

您还可以在 CLI 中使用以下命令显示加载的配置文件:

$ php --ini

Configuration File (php.ini) Path: /etc/php
Loaded Configuration File:         /etc/php/php-cli.ini
Scan for additional .ini files in: /etc/php/conf.d
Additional .ini files parsed:      /etc/php/conf.d/xdebug.ini

然后,您需要检查error_log configuration directive,因为它定义了写入日志的位置。

【讨论】:

  • 我按照你说的做了,但日志中仍然没有任何内容
  • 那为什么没有--process-isolation就找不到类呢?
  • Not found class 只是一个例子。更一般地说,在 PHPUnit 初始化之前发生的 PHP 错误不会让它在终端中显示错误。这只是当我的一个班级名称出现拼写错误时我注意到的一种行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 2014-12-10
  • 2013-04-05
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多