从 Laravel 5.1 更新到 5.2 已使 PHPUnit 停止工作

Update from Laravel 5.1 to 5.2 has stopped PHPUnit from working

为了使我们的项目保持最新并利用​​新的开发,我们昨天从 Laravel 5.1 更新到 5.2。在修改我们的代码库几个小时后,一切似乎 运行 正常,除了现在我们在 5.1 中广泛使用的 PHP 单元测试现在已经停止。 PHP单元显示第一行以表明它已初始化:

PHPUnit 4.8.24 by Sebastian Bergmann and contributors.

然后无限期地冻结。我已经尝试升级到更高版本的 PHPUnit(我们使用的是 4.2.24,我尝试移动到 5.3.2,但结果相同)。

很遗憾,日志中没有错误。我试图删除所有测试以确保 PHPUnit 运行s 没有任何测试,它确实这样做了:

Time: 2.19 seconds, Memory: 4.25Mb
No tests executed!

这表明我的测试中可能有什么东西导致了它,但我已经删除了除单个测试之外的所有内容,但问题仍然存在。

有谁知道在从 5.1 迁移到 5.2 时可能导致此问题的原因是什么?如何进行调试并将这些测试再次提交给 运行?

我们正在使用 PHP 版本 5.6.13。

配置,它的价值:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
        backupStaticAttributes="false"
        bootstrap="bootstrap/autoload.php"
        colors="true"
        convertErrorsToExceptions="true"
        convertNoticesToExceptions="true"
        convertWarningsToExceptions="true"
        processIsolation="false"
        stopOnFailure="true">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
    </php>
</phpunit>

我遇到了同样的问题,我通过从我的测试中删除 DatabaseMigrations 的使用来解决。如果你有它,请尝试将其删除并再次 运行 你的测试。

对于陷入更多 Laravel 疯狂的可怜的灵魂,这里的问题是一些配置在 5.15.2 中发生了变化。令人沮丧的是,我从下往上重建了我的配置,一切又开始正常工作了。这是我所做的:

  1. 添加名为 .env.testing 的测试环境文件。

我的看起来有点像这样:

DB_CONNECTION="testing"

DB_HOST=localhost
DB_DATABASE=something_tests
DB_USERNAME=username
DB_PASSWORD=password

APP_DEBUG="true"
  1. 在你的 phpunit.xml 文件中,在 <php> 部分,添加 <env name="APP_ENV" value="testing"/>,使其指向上述文件。
  2. 检查您的 config/database.php 文件并确保 DB_CONNECTION 已定义且正确。

完成后,照常进行 php artisan config:clear。我还发现,如果在开发过程中某些测试失败,有时我的测试数据库会变得一团糟,所以偶尔我需要把所有东西都炸掉然后重建。