【问题标题】:phpunit fails after a number of testsphpunit 在多次测试后失败
【发布时间】:2015-10-31 13:27:02
【问题描述】:

我从命令行为 laravel 网站运行 phpunit。

输出(第一行)是:

.................FFFFFFFFFFFFFFFFF.FFFFFFFFF.FFFFFFFFFFFFFFFFF.  63 / 105 ( 60%)

但是,所有这些测试都可以单独运行。当我将它们全部一起运行时,它们中的大多数都失败了。

所有错误都显示代码 500、200 预期。

示例:

<pre>
not ok 99 - Failure: TeamTest::testApiShow
---
message: 'A GET request to ''http://localhost/api/v1/teams/1'' failed. Got a 500 code instead.'
severity: fail
</pre>

详情

错误发生在第 47 行 [..]vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php

line 47: return new PDO($dsn, $username, $password, $options);

完整输出:http://pastebin.com/bt29w7Lz phpunit的配置:http://pastebin.com/pBT59aXM

【问题讨论】:

  • 您是否尝试过运行phpunit --verbose 以获得更有用的输出?
  • 最多秀PDOException on [..]vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php line 47
  • 就这些了吗?尝试将您的完整输出发布到 pastebin.com 并分享链接
  • 你能对 phpunit.xml 做同样的事情吗?你可以先隐藏你的密码。

标签: php laravel phpunit


【解决方案1】:

可能是打开的数据库连接过多。 PostgreSQL 和 MySQL 对可用连接数都有限制,phpUnit 既不将连接池化,也不会在使用后将连接返回到池中。

我经常需要将 Jenkins(单元测试)服务器上 PostgreSQL 的最大连接数增加到 500 或更多才能运行完整的单元测试套件。

在这里查看更多:

https://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

https://wiki.postgresql.org/wiki/Number_Of_Database_Connections

【讨论】:

  • 我在共享主机上运行,​​我无法更改最大连接数。有没有办法减慢phpunit,所以我打开的连接更少?
  • 对不起,放慢 phpUnit 的速度并没有帮助,问题是在 phpUnit 进程退出之前连接不会被丢弃。您可以尝试在本地运行测试吗?例如在您自己 PC 上的虚拟机上?
  • 我在本地机器上设置了一个版本,它在那里工作。我也只是希望能够在线运行它,以确保一切正常。
【解决方案2】:

这是 SQL 连接过多的情况,幸运的是,有一种方法可以解决它:在 tearDown 期间关闭 MySQL 连接。在 Laravel 上,这看起来像:

public function tearDown()
{
    $this->beforeApplicationDestroyed(function () {
        foreach (\DB::getConnections() as $connection) {
            $connection->disconnect();
        }
    });

    parent::tearDown();
}

基于:https://www.neontsunami.com/posts/too-many-connections-using-phpunit-for-testing-laravel-51

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2017-06-24
    • 2020-03-05
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多