测试执行后,Laravel PHPunit终止进程 - PosgtreSQL max_connection已执行

时间:2018-01-18 15:19:58

标签: php postgresql laravel testing phpunit

我使用PHPUnit来对Laravel 5.4应用程序进行多次测试。

超过100个测试使用数据库查询。我使用 \ Illuminate \ Foundation \ Testing \ DatabaseMigrations 类在每次测试之前重置和迁移数据库(因此对于测试文件中的每个方法)。

但是当我运行 phpunit 命令时,它会显示一个由于max_connection被删除而导致的错误。

我无法在服务器上增加max_connection限制。我尝试对phpunit使用 - process-isolation 参数,但它会增加测试的持续时间:15分钟而不是2分钟。

我搜索了很多时间来设置进程数限制,但除了 - process-isolation 参数之外我什么也没找到。

您知道为PHPUnit设置进程号的方法吗?或者是一种在测试后删除数据库连接的方法?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我将此方法添加到 tests / TestCase.php 文件中:

public function tearDown() {
    \DB::connection()->setPdo(null);
}

通过使用此代码,您应该注意,因为父tearDown()方法将不会运行。您可以添加以下行来执行此操作:

parent::tearDown();

如果通过添加此行,问题仍然存在,则应分析父tearDown()代码以获取导致问题的代码。