为了使我们的项目保持最新并利用新的开发,我们昨天从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>
答案 0 :(得分:2)
对于那些陷入更多Laravel疯狂的可怜的灵魂,这里的问题是5.1
到5.2
的某些配置发生了变化。沮丧的是,我从下往上重建了我的配置,事情又开始起作用了。这就是我的所作所为:
.env.testing
的测试环境文件。 DB_CONNECTION="testing"
DB_HOST=localhost
DB_DATABASE=something_tests
DB_USERNAME=username
DB_PASSWORD=password
APP_DEBUG="true"
phpunit.xml
文件的<php>
部分,添加<env name="APP_ENV" value="testing"/>
,以便指向上述文件。config/database.php
文件,确保DB_CONNECTION
已定义且正确无误。完成后,请执行常规php artisan config:clear
。我还发现,如果某些测试在开发过程中失败,有时候我的测试数据库会搞乱,所以偶尔我需要将整个过程抛出并重建。
答案 1 :(得分:0)
我遇到了同样的问题,我解决了从测试中删除DatabaseMigrations的问题。如果你有,请尝试将其删除并再次运行测试。