从Laravel 5.1到5.2的更新已经阻止了PHPUnit的工作

时间:2016-04-22 11:28:46

标签: php laravel phpunit laravel-5.2

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

PHPUnit 4.8.24 by Sebastian Bergmann and contributors.

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

遗憾的是,日志中没有错误。我试图删除所有测试以确保PHPUnit在没有任何测试的情况下运行,并且它会这样做:

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>

2 个答案:

答案 0 :(得分:2)

对于那些陷入更多Laravel疯狂的可怜的灵魂,这里的问题是5.15.2的某些配置发生了变化。沮丧的是,我从下往上重建了我的配置,事情又开始起作用了。这就是我的所作所为:

  1. 添加名为.env.testing的测试环境文件。
  2. 我看起来有点像这样:

    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已定义且正确无误。
    3. 完成后,请执行常规php artisan config:clear。我还发现,如果某些测试在开发过程中失败,有时候我的测试数据库会搞乱,所以偶尔我需要将整个过程抛出并重建。

答案 1 :(得分:0)

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