从 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.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
。我还发现,如果在开发过程中某些测试失败,有时我的测试数据库会变得一团糟,所以偶尔我需要把所有东西都炸掉然后重建。
为了使我们的项目保持最新并利用新的开发,我们昨天从 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.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
。我还发现,如果在开发过程中某些测试失败,有时我的测试数据库会变得一团糟,所以偶尔我需要把所有东西都炸掉然后重建。