Ошибка PhpUnit при угадывании каталога ядра

Это мой тестовый класс PhpUnit:

<?php

namespace tests\AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class SendEmailControllerTest extends WebTestCase
{
    public function testMailIsSentAndContentIsCorrect()
    {
        $client = static:: createClient();

        ...
    }
}

Но когда я пытаюсь запустить его, я получаю сообщение об ошибке:

Unable to guess the Kernel directory.
 C:\myProject\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Test\KernelTestCase.php:62
 C:\myProject\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Test\KernelTestCase.php:138
 C:\myProject\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Test\KernelTestCase.php:184
 C:\myProject\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Test\KernelTestCase.php:165
 C:\myProject\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Test\WebTestCase.php:33
 C:\myProject\tests\AppBundle\Controller\SendEmailControllerTest.php:12

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

Remaining deprecation notices (3)

  1x: Using the KERNEL_DIR environment variable or the automatic guessing based on the phpunit.xml / phpunit.xml.dist file location is deprecated since Symfony 3.4. Set the KERNEL_CLASS environment variable to the fully-qualified class name of your Kernel instead. Not setting the KERNEL_CLASS environment variable will throw an exception on 4.0 unless you override the :createKernel() or :getKernelClass() method.
    1x in SendEmailControllerTest::testMailIsSentAndContentIsCorrect from tests\AppBundle\Controller

  1x: The Symfony\Bundle\FrameworkBundle\Test\KernelTestCase::getPhpUnitXmlDir() method is deprecated since Symfony 3.4 and will be removed in 4.0.
    1x in SendEmailControllerTest::testMailIsSentAndContentIsCorrect from tests\AppBundle\Controller

  1x: The Symfony\Bundle\FrameworkBundle\Test\KernelTestCase::getPhpUnitCliConfigArgument() method is deprecated since Symfony 3.4 and will be removed in 4.0.
    1x in SendEmailControllerTest::testMailIsSentAndContentIsCorrect from tests\AppBundle\Controller
C:\xampp\php\php.exe C:/myProject/vendor/phpunit/phpunit/phpunit --no-configuration tests\AppBundle\Controller\SendEmailControllerTest C:\myProject\tests\AppBundle\Controller\SendEmailControllerTest.php --teamcity
Testing started at 23:09 ...
PHPUnit 5.6.0 by Sebastian Bergmann and contributors.


Process finished with exit code 2

Но проблема в том, что я не понимаю, как исправить проблемы устаревания, указанные в трассировке ...

Редактировать:

Следуя официальной документации, я добавил в файл 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 = "vendor/autoload.php"
>
    <php>
        <ini name = "error_reporting" value = "-1" />
        <env name = "KERNEL_CLASS" value = "App\Kernel" />
        <server name = "KERNEL_CLASS" value = "AppKernel" />
    </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) Я все еще получаю ту же ошибку

2) Код http://schema.phpunit.de/4.8/phpunit.xsd отображается красным цветом с сообщением «URI не зарегистрирован (Настройки | Языки и рамки | Схемы и DTD). Итак, я пошел в это место и в разделе« Внешние схемы и DTD »добавил этот URI, а местоположение является корнем моего проекта. Однако это красное предупреждение сохраняется, и я подозреваю, что оно связано с место расположения, но где это?

Актуальный вопрос
Nikita U. 18.04.2018 08:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
1
6 595
3

Ответы 3

Как в документации говорится

To run your functional tests, the WebTestCase class needs to know which is the application kernel to bootstrap it. The kernel class is usually defined in the KERNEL_CLASS environment variable (included in the default phpunit.xml.dist file provided by Symfony):

<?xml version = "1.0" charset = "utf-8" ?>
<phpunit>
    <php>
        <!-- the value is the FQCN of the application kernel -->
        <env name = "KERNEL_CLASS" value = "App\Kernel" />
    </php>
    <!-- ... -->
</phpunit>

Установка этого в phpunit.xml.dist позволяет мне работать с symfony 3.4

<php>
    <!-- the value is the FQCN of the application kernel -->
    <env name = "KERNEL_CLASS" value = "AppKernel" />
</php>

Я могу подтвердить, что это очищает сообщения об устаревании KernelTestCase в Symfony 3.4.17.

crmpicco 29.10.2018 04:33

Никита У. прав здесь, но я хотел указать на пару мелочей, которые могут помочь кому-то еще в будущем, особенно местоположение.

Согласно многим заметкам, которые я нашел, особенно комментариям из репо, это должен быть <server name ..., но я обнаружил, что <env name ... тоже работает. Он должен находиться в блоке <php> файлов phpunit.xml.dist или phpunit.xml (следует использовать только один из них) в корневом каталоге проекта. Если ни одного файла нет, создайте его (кажется, он работает) и используйте пример Никиты для текста.

Также обратите внимание, что в Symfony 4 с Flex значение равно «App \ Kernel», а не «AppKernel». Больше можно найти здесь: https://github.com/symfony/symfony-standard/issues/1073

Другие вопросы по теме