RuntimeException:无法猜测内核目录

Posted

技术标签:

【中文标题】RuntimeException:无法猜测内核目录【英文标题】:RuntimeException : Unable to guess the Kernel directory 【发布时间】:2018-08-24 14:25:19 【问题描述】:

我正在使用 Symfony 3.4。突然,每当我尝试在 /tests 中运行我的测试(phpunit)时,我都会收到以下错误:

RuntimeException : Unable to guess the Kernel directory.

我的测试类看起来像:

class PaymentCreditTest extends KernelTestCase

    /** @var PaymentRepository */
    public $paymentRepository;

    /**
     * @inheritDoc
     */
    protected function setUp()
    
        $this->paymentRepository = self::bootKernel()->getContainer()->get('chaku.repository.payment');
    

    public function test_canRetrieveDeadFreightNetAmount()
    
        /** @var Payment $payment */
        $payment = $this->paymentRepository->findOneBy(['id' => 1000002]);

        // just to see payment object
        dump($payment);
    

这就是我的 phpunit.xml.dist 的样子:

<?xml version="1.0" encoding="UTF-8"?>

<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="app/autoload.php">
    <php>
        <ini name="error_reporting" value="-1" />
        <server name="KERNEL_CLASS" value="AppKernel" />
        <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
    </php>

    <testsuites>
        <testsuite name="Project Test Suite">
            <directory>tests</directory>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist>
            <directory>src</directory>
            <exclude>
                <directory>src/*Bundle/Resources</directory>
                <directory>src/*/*Bundle/Resources</directory>
                <directory>src/*/Bundle/*Bundle/Resources</directory>
            </exclude>
        </whitelist>
    </filter>
</phpunit>

对此的任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我想我几周前也遇到了同样的问题,你可以尝试添加KERNEL_DIR

<php>
    <ini name="error_reporting" value="-1" />
    <server name="KERNEL_CLASS" value="AppKernel" />
    <server name="KERNEL_DIR" value="app/" />
    <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
</php>

【讨论】:

如果可以,最好使用 KERNEL_CLASS - 因为 Symfony4 允许在应用程序中轻松使用多个内核,KERNEL_CLASS 将使用它在目录中找到的第一个。【参考方案2】:

./vendor/bin/simple-phpunit -c app/ 在执行测试命令时添加Appkernel目录,即app。

【讨论】:

以上是关于RuntimeException:无法猜测内核目录的主要内容,如果未能解决你的问题,请参考以下文章

RuntimeException: 无法创建缓存目录 (/var/www/sonata/app/cache/dev)

未捕获的异常'RuntimeException',消息'无法创建目录public / assets // node_modules / font-awesome / fonts

linux内核调试技巧之一 dump_stack

RuntimeException:无法调度事件@otto

RuntimeException:无法连接到相机服务?

RuntimeException:无法膨胀行为子类