从Laravel 5.1到5.2的更新已使PHPUnit停止工作
为了使我们的项目保持最新,并利用新的发展,昨天我们将Laravel 5.1更新为5.2。在对我们的代码库进行了几个小时的处理之后,一切似乎都正常运行,除了我们在5.1中广泛使用的PHPUnit测试现在已经停止。PHPUnit显示第一行以显示其已初始化:从Laravel 5.1到5.2的更新已使PHPUnit停止工作,php,laravel,phpunit,laravel-5.2,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 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>
/测试/
应用程序/
我也面临同样的问题,我通过从测试中删除数据库迁移的使用来解决这个问题。如果你有它,试着删除它并再次运行你的测试。对于那些陷入更疯狂的拉拉威尔的可怜的灵魂来说,这里的问题是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
文件的
部分,添加
,使其指向前面提到的文件config/database.php
文件,确保定义了DB\u连接
完成后,执行通常的
php-artisan-config:clear
。我还发现,如果在开发过程中某些测试失败,有时我的测试数据库会变得一团糟,因此有时我需要将整个过程炸掉并重建。您使用的是什么PHP版本?@RossWilson抱歉,5.6.13我知道PHP7有一些问题,但不幸的是5.6.Hi@dKen没有问题,我以前也有过同样的问题,老实说,因为laravel的测试API已从版本更改为(检查API),所以我记不清如何解决这个问题,但我没有删除迁移。如何在不使用迁移的情况下使用一致的DB进行测试?编辑:事实上,我认为这是配置在5.1
到5.2
中改变的方式。我从下到上重新构建了我的测试配置,并将其记录下来,以便将来记住!谢谢你的评论。我不是说我删除了迁移文件。我指的是数据库迁移