PHPUnit: доступ к термину фильтра в методе TestCase - PullRequest
1 голос
/ 06 августа 2020

Кажется, я нигде не могу найти ответ на этот вопрос, но он, вероятно, прямо передо мной (обычно так и есть).

Для моего проекта: с использованием PHPUnit у меня есть много тестов в нескольких файлах , но есть несколько тестов, выполнение которых (намеренно) занимает много времени, поэтому по умолчанию они помечены как «пропущенные».

Я бы хотел, чтобы я выполнял ВСЕ мои тесты (кроме из пропущенных тестов), используя инструкцию командной строки по умолчанию, но если термин фильтра предназначен специально для пропущенных тестов, то запускаются только эти тесты (или они включены в основной запуск), а пропущенная инструкция игнорируется.

Я могу добиться этого, если у меня будет доступ к термину, используемому в --filter, но я не вижу, возможно это или нет.

Я знаю, что могу использовать тестовые наборы и могу хорошо, что мне нужно переключиться на эту парадигму, но если это возможно, я бы предпочел это, поскольку это означает, что я могу использовать тестовую команду по умолчанию 99% времени вместо того, чтобы каждый раз указывать набор.

Для ссылка У меня есть моя команда test в качестве псевдонима (для проекта \ vendor \ bin \ phpunit), что обеспечивает быструю инструкцию.

К сожалению, установка значения @group и использование его в псевдониме по умолчанию (project\vendor\bin\phpunit --exclude-group), тогда использование $ test --group не работает (два параметра компенсируют друг друга).

1 Ответ

1 голос
/ 06 августа 2020

Думаю, самый простой способ сделать это - разделить ваши тесты на два набора тестов. Когда вы устанавливаете атрибут defaultTestSuite в своей конфигурации XML, вам не нужно указывать набор тестов при запуске вашей команды test. Если вы хотите запустить другой пакет, вы можете сделать это с помощью опции --testsuite.

Вот сокращенный пример:

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

<phpunit defaultTestSuite="unit" /* ... */>
    <testsuites>
        <testsuite name="unit">
            <directory>tests/Unit</directory>
        </testsuite>
        <testsuite name="functional">
            <directory>tests/Functional</directory>
        </testsuite>
    </testsuites>

    <!-- ... -->
</phpunit>
  • phpunit запустит набор тестов unit
  • phpunit --testsuite=functional запустит набор тестов functional
  • phpunit --testsuite=unit,functional запустит оба набора тестов
...