Symfony 4 phpunit:KERNEL_CLASS 环境变量错误

问题描述 投票:0回答:3

我正在尝试通过测试“make:user”创建的 User 类来学习如何制作 phpunit,但在扩展“KernelTestCase”并运行测试时我遇到了这个问题:

LogicException:您必须将 KERNEL_CLASS 环境变量设置为 phpunit.xml / phpunit.xml.dist 中内核的完全限定类名,或者覆盖“App ests\Entity
UsersTest::createKernel()”或“App ests\Entity\UsersTest::getKernelClass()”方法。

这是我的测试,我正在尝试测试一个实体:

两天以来我一直在尝试与我的朋友 Google 修复此问题,但没有找到任何解决方案。你能帮助我吗 ?谢谢你们!

phpunit symfony4
3个回答
28
投票

我刚刚遇到了同样的问题。

解决方案是更新您的

./phpunit.xml.dist
文件以设置 KERNEL_CLASS 环境变量:

[...]
    <php>
        <ini name="error_reporting" value="-1" />
        <server name="APP_ENV" value="test" force="true" />
        <server name="SHELL_VERBOSITY" value="-1" />
        <server name="SYMFONY_PHPUNIT_REMOVE" value="" />
        <server name="SYMFONY_PHPUNIT_VERSION" value="7.5" />
        <server name="KERNEL_CLASS" value="App\Kernel" /> <--- SET KERNEL_CLASS AT THIS LINE
    </php>
[...]

4
投票

在我的例子中,

tests/bootstrap.php
文件与phpunit-bridge配方之一不同步。该配方未执行,因为我将 Symfony 3.4(无 Flex)更新为 Symfony 4.4。

使用

composer recipes:install symfony/phpunit-bridge --force -v
安装配方后,以下文件被覆盖

  • .env.test
  • phpunit.xml.dist
  • tests/bootstrap.php

现在

.env.test
已加载,并且在那里定义的
KERNEL_CLASS
环境变量已被正确尊重。


0
投票
<php>
    <env name="KERNEL_CLASS" value="App\Kernel" />
</php>

除了其他人提到的解决方案之外,还需要考虑该文件才能使用“phpunit.xml.dist”文件中的环境变量。

例如,在PhpStorm中,我们需要在Settings -> Test Frameworks中定位它,并在“默认配置文件”中定义phpunit.xml.dist的路径。

现在,您需要了解如何将 phpUnit.xml.dist 文件与您的 IDE 或 CLI 链接。

© www.soinside.com 2019 - 2024. All rights reserved.