Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Laravel 5.1到5.2的更新已使PHPUnit停止工作_Php_Laravel_Phpunit_Laravel 5.2 - Fatal编程技术网

从Laravel 5.1到5.2的更新已使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,但结果相同) 很遗憾,日志

为了使我们的项目保持最新,并利用新的发展,昨天我们将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>

/测试/
应用程序/

我也面临同样的问题,我通过从测试中删除数据库迁移的使用来解决这个问题。如果你有它,试着删除它并再次运行你的测试。

对于那些陷入更疯狂的拉拉威尔的可怜的灵魂来说,这里的问题是
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
    中改变的方式。我从下到上重新构建了我的测试配置,并将其记录下来,以便将来记住!谢谢你的评论。我不是说我删除了迁移文件。我指的是数据库迁移