使用 PhpStorm 在 Laravel 中运行单一功能测试

Posted

技术标签:

【中文标题】使用 PhpStorm 在 Laravel 中运行单一功能测试【英文标题】:Running single feature test in Laravel with PhpStorm 【发布时间】:2020-04-13 18:44:11 【问题描述】:

我在 phpStorm 中有一个 Laravel 项目设置。将 PHP 7.3PHPUnit 8.4.0 结合使用。

我的 phpunit.xml 设置如下,当我执行 Run -> Run -> phpunit.xml 时,它工作正常并且 /tests/feature/ 中的所有测试都运行...耶。

启动时的输出是这样的:

[vagrant:///home/mypc/code/homestead]:/usr/bin/php /home/vagrant/myproject/vendor/phpunit/phpunit/phpunit --configuration /home/vagrant/myproject/phpunit.xml --teamcity --cache-result-file=/home/vagrant/myproject/.phpunit.result.cache

但是我现在有很多测试,我并不总是希望每次都运行所有测试,所以我应该能够右键单击任何测试方法并单击“运行...方法名称。 ..”,但是当我这样做时会发生错误:

[vagrant:///home/mypc/code/homestead]:/usr/bin/php /home/vagrant/myproject/vendor/phpunit/phpunit/phpunit --configuration /home/vagrant/myproject/phpunit.xml --filter "/(::test_example_test_for_running)( .*)?$/" Tests\\Feature\\ExampleTest\\ExampleTest /home/vagrant/myproject/tests/Feature/ExampleTest.php --teamcity --cache-result-file=/home/vagrant/myproject/.phpunit.result.cache

Fatal error: Uncaught PHPUnit\Runner\Exception: Class 'Tests\\Feature\\ExampleTest\\ExampleTest' could not be found in '/home/vagrant/myproject/tests/Feature/ExampleTest.php'. in /home/vagrant/myproject/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php:65

这是我的 phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>

        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
    <extensions>
        <extension class="Tests\Bootstrap"/>
    </extensions>
    <php>
        <server name="APP_ENV" value="testing"/>
        <server name="BCRYPT_ROUNDS" value="4"/>
        <server name="CACHE_DRIVER" value="array"/>
        <server name="MAIL_DRIVER" value="array"/>
        <server name="QUEUE_CONNECTION" value="sync"/>
        <server name="SESSION_DRIVER" value="array"/>
        <server name="APP_CONFIG_CACHE" value="bootstrap/cache/config.phpunit.php"/>
        <server name="APP_SERVICES_CACHE" value="bootstrap/cache/services.phpunit.php"/>
        <server name="APP_PACKAGES_CACHE" value="bootstrap/cache/packages.phpunit.php"/>
        <server name="APP_ROUTES_CACHE" value="bootstrap/cache/routes.phpunit.php"/>
        <server name="APP_EVENTS_CACHE" value="bootstrap/cache/events.phpunit.php"/>
        <server name="DB_CONNECTION" value="sqlite"/>
        <server name="DB_DATABASE" value=":memory:"/>
    </php>
</phpunit>

【问题讨论】:

请尝试 PHPUnit 8.5 和 PhpStorm 2019.3.1。乍一看是一样的:youtrack.jetbrains.com/issue/WI-49132(P.S.忽略 PHPUnit 8.5 中引入的弃用警告 -- WI-50201) 【参考方案1】:

升级到 phpunit 8.5 解决了这个问题(感谢@LazyOne)。

在 composer.json 中更改:

"phpunit/phpunit": "^8.0"

到:

"phpunit/phpunit": "^8.5"

然后运行composer update,现在一切正常。

【讨论】:

以上是关于使用 PhpStorm 在 Laravel 中运行单一功能测试的主要内容,如果未能解决你的问题,请参考以下文章

在 PhpStorm 中为 Laravel Homestead vagrant VM 运行测试

PhpStorm Laravel 5.4 自动外观支持

解决laravel环境在Ubuntu下使用php artisan 创建文件后无法在phpstorm中编辑的问题

迁移到 Homestead 后在 PhpStorm 中为 Laravel 运行测试

PhpStorm + XAMPP 未在命令行中显示最新的 PHP 版本

xdebug、PhpStorm 和 Laravel 3 / mod_rewrite 未命中断点