Spec-Zone.ru › PHPUnit

Средство запуска тестов командной строки

Средство запуска тестов PHPUnit командной строки можно вызвать с помощью команды phpunit.

Запуск тестов

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

$ ./tools/phpunit
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.3
Configuration: /path/to/project/phpunit.xml

..                                                                  2 / 2 (100%)

Time: 00:00.077, Memory: 10.00 MB

OK (2 tests, 2 assertions)

Также можно запустить тесты из определённого файла с исходным кодом тестов, передав путь к нему в качестве аргумента:

$ ./tools/phpunit tests/ExampleTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.3

..                                                                  2 / 2 (100%)

Time: 00:00.077, Memory: 10.00 MB

OK (2 tests, 2 assertions)

При вызове, как показано выше, средство запуска тестов PHPUnit командной строки ищет файл с исходным кодом ExampleTest.php в текущем рабочем каталоге, загружает его и ожидает найти класс тестового примера ExampleTest. Затем оно запускает тесты, найденные в этом классе.

Тесты PHPT

Помимо классов тестов, средство запуска тестов PHPUnit также может выполнять тесты PHPT. PHPT — это простой формат тестов, используемый самим проектом PHP. Файлы с суффиксом .phpt автоматически обнаруживаются средством запуска тестов (см. параметр --test-suffix в разделе Выбор).

Это может быть полезно, например, для сквозного тестирования инструментов CLI или для добавления базовых регрессионных тестов в устаревшие кодовые базы.

Выбор тестов

PHPUnit предоставляет несколько параметров командной строки для выбора запускаемых тестов.

Фильтрация по имени теста

Параметр --filter выбирает тесты, имена которых соответствуют шаблону:

$ ./tools/phpunit --filter testDoesSomething
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.3
Configuration: /path/to/project/phpunit.xml

.                                                                   1 / 1 (100%)

Time: 00:00.077, Memory: 10.00 MB

OK (1 test, 1 assertion)

Шаблон сопоставляется с полным именем теста, имеющим одну из следующих форм:

Fully\Qualified\ClassName::testMethodName
Fully\Qualified\ClassName::testMethodName with data set #0
Fully\Qualified\ClassName::testMethodName with data set "named set"

Совпадение может быть частичным (шаблон не обязан охватывать всё имя) и не привязано к началу или концу строки. Например, --filter testAdd также соответствует тесту с именем testAddress.

Тесты PHPT (см. Тесты PHPT) никогда не выбираются параметром --filter.

Параметр --exclude-filter принимает тот же синтаксис шаблонов, описанный ниже, и исключает соответствующие тесты из запуска. Его можно сочетать с --filter.

Сокращённый синтаксис

Для распространённых случаев нет необходимости писать регулярное выражение. Распознаются следующие сокращённые формы, которые внутри преобразуются в соответствующий шаблон:

testMethodName

Выбирает все тесты, в имени которых содержится testMethodName.

ClassName::testMethodName

Выбирает определённый метод тестирования в определённом классе.

testMethodName#3

Выбирает метод тестирования вместе с набором данных #3 (числовой ключ набора данных).

testMethodName#1-3

Выбирает метод тестирования вместе с числовыми наборами данных в диапазоне от 1 до 3 включительно.

#1-3

Выбирает числовые наборы данных в диапазоне от 1 до 3 включительно для всех методов тестирования.

testMethodName@one plus one

Выбирает метод тестирования вместе с именованным набором данных "one plus one". Заключите аргумент в кавычки, чтобы оболочка сохранила пробелы.

testMethodName@one.*

Выбирает метод тестирования вместе с любым именованным набором данных, соответствующим регулярному выражению one.*.

testMethodName#one plus one

Выбирает метод тестирования вместе с именованным набором данных "one plus one". Эта форма эквивалентна testMethodName@one plus one и принимается, чтобы идентификатор теста, сформированный командой --list-test-ids, можно было напрямую передать команде --filter. Заключите аргумент в кавычки, чтобы оболочка сохранила пробелы.

При использовании сокращённой формы сопоставление выполняется без учёта регистра.

Синтаксис регулярных выражений

Если шаблон начинается с неалфавитно-цифрового символа и является корректным регулярным выражением PCRE, он используется без изменений (включая разделители и модификаторы). Эта форма удобна, если выразительности сокращённого синтаксиса недостаточно или требуется сопоставление с учётом регистра:

$ ./tools/phpunit --filter '/^App\\Domain\\.*Test::test/'

Внимание

Полные имена классов содержат обратные косые черты, которые в регулярных выражениях являются специальными символами. Чтобы использовать --filter с полным именем класса, необходимо либо экранировать каждую обратную косую черту (App\\\\Domain\\\\FooTest), либо заключить шаблон в явные разделители (/App\\\\Domain\\\\FooTest/). Фильтр не обрабатывается функцией preg_quote(), поэтому все метасимволы регулярных выражений остаются активными.

Фильтрация по набору тестов

Если в файле конфигурации XML определено несколько наборов тестов, можно использовать параметр --testsuite, чтобы запускать тесты только из определённого набора:

$ ./tools/phpunit --testsuite unit
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.3
Configuration: /path/to/project/phpunit.xml

...............                                                    15 / 15 (100%)

Time: 00:00.100, Memory: 10.00 MB

OK (15 tests, 30 assertions)

Параметр --exclude-testsuite исключает из запуска набор тестов с указанным именем.

Параметр --list-suites выводит список всех наборов тестов, определённых в файле конфигурации XML, не запуская тесты.

Фильтрация по группе

Параметр --group запускает только тесты, принадлежащие указанной группе. Группы назначаются тестам с помощью атрибута #[Group] (см. Group).

Параметр --exclude-group исключает тесты, принадлежащие указанной группе.

Фильтрация по покрываемой единице кода

Параметр --covers запускает только тесты, в которых объявлено намерение покрыть указанный класс или функцию. Параметр --uses запускает только тесты, в которых объявлено намерение использовать указанный класс или функцию.

Фильтрация по идентификатору теста

Идентификатор теста — это канонический полностью квалифицированный идентификатор отдельного теста. Он имеет одну из следующих форм:

Fully\Qualified\ClassName::testMethodName
Fully\Qualified\ClassName::testMethodName#0
Fully\Qualified\ClassName::testMethodName#named data set

Идентификаторы тестов сопоставляются строго и точно; они не являются шаблонами.

Параметр --run-test-id запускает отдельный тест, указанный заданным идентификатором:

$ ./tools/phpunit --run-test-id 'PHPUnit\TestFixture\ExampleTest::testOne#named data set'

Параметр --test-id-filter-file запускает тесты, идентификаторы которых перечислены в указанном файле, по одному идентификатору на строку. В сочетании с --list-test-ids (см. Вывод списка тестов) этот параметр позволяет организовать процесс «вывести список/отфильтровать/запустить», полезный, например, для распределения набора тестов между параллельными заданиями CI:

  1. Выведите список всех идентификаторов тестов: phpunit --list-test-ids > test-ids.txt

  2. Разделите файл на группы или отфильтруйте его

  3. Запустите группу: phpunit --test-id-filter-file batch-1.txt

Вывод списка тестов

Параметр --list-tests выводит список всех тестов, которые были бы выполнены, но не запускает их. Это полезно для проверки того, что параметры выбора работают ожидаемым образом.

Параметр --list-test-ids выводит список всех тестов, которые были бы выполнены, в виде идентификаторов тестов (по одному на строку), но не запускает их. Вывод этого параметра подходит для использования с --test-id-filter-file и --run-test-id (см. Фильтрация по идентификатору теста).

Параметр --list-tests-xml записывает этот список в файл в формате XML.

Полный перечень всех параметров выбора тестов см. в разделе Выбор.

Результат и проблемы

PHPUnit отделяет результат теста (ошибка выполнения, сбой, неполный, пропущенный или пройденный) от проблем теста (считается рискованным, вызвал предупреждение и т. д.).

Что касается результата, PHPUnit различает сбои и ошибки выполнения. Тест завершается сбоем, если не прошло утверждение. Это отличается от неожиданного исключения или ошибки PHP, возникших во время выполнения теста. В таких случаях тест завершается с ошибкой выполнения.

Ошибки выполнения, как правило, исправить проще, чем сбои. Если у вас большой список проблем, лучше сначала устранить ошибки выполнения, а затем проверить, остались ли сбои.

Вывод

Вывод средства запуска тестов PHPUnit по умолчанию состоит максимум из четырёх разделов.

Сведения о среде выполнения

В этом разделе содержатся сведения о версии PHPUnit, версии PHP и файле конфигурации XML PHPUnit.

Этот раздел можно отключить с помощью параметра CLI --no-output.

Ход выполнения

Этот раздел отображается для обозначения хода выполнения тестов.

Для каждого выполняемого теста инструмент PHPUnit командной строки выводит один символ, обозначающий результат:

.

Выводится, если успешно пройденный тест не вызвал проблем

F

Выводится, если при выполнении метода теста не прошло утверждение

E

Выводится, если при выполнении метода теста произошла ошибка

W

Выводится, если тест вызвал предупреждение

R

Выводится, если тест признан рискованным (см. Рискованные тесты)

D

Выводится, если тест вызвал сообщение об устаревании

N

Выводится, если тест вызвал уведомление

I

Выводится, если тест помечен как неполный (см. Неполные тесты)

S

Выводится, если тест пропущен (см. Пропуск тестов)

Этот раздел можно отключить с помощью параметров CLI --no-progress и --no-output.

Результаты тестов

В этом разделе содержатся сведения об ошибках выполнения, сбоях, пропущенных и неполных тестах, а также о проблемах. По умолчанию выводятся только сведения об ошибках выполнения и сбоях.

Этот раздел отображается только при наличии ошибок выполнения, сбоев или проблем, о которых нужно сообщить. Его можно отключить с помощью параметров CLI --no-results и --no-output.

Вывод при сбое

При каждом сбое теста PHPUnit старается предоставить как можно больше контекста, который поможет определить проблему.

Пример 3.1 Вывод при сбое сравнения массивов
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArrayDiffTest extends TestCase
{
    public function testEquality(): void
    {
        $this->assertSame(
            [1, 2,  3, 4, 5, 6],
            [1, 2, 33, 4, 5, 6],
        );
    }
}

При запуске показанного выше теста выводится следующий результат:

./tools/phpunit tests/ArrayDiffTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArrayDiffTest::testEquality
Failed asserting that two arrays are identical.
--- Expected
+++ Actual
@@ @@
 Array &0 [
     0 => 1,
     1 => 2,
-    2 => 3,
+    2 => 33,
     3 => 4,
     4 => 5,
     5 => 6,
 ]

/path/to/tests/ArrayDiffTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

В этом примере различается только одно значение массива, а остальные значения показаны, чтобы дать контекст и указать, где произошла ошибка.

Если сгенерированный вывод слишком велик, чтобы его было удобно читать, PHPUnit разобьёт его на части и покажет несколько строк контекста вокруг каждого различия.

Пример 3.2 Вывод при сбое сравнения длинных массивов
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class LongArrayDiffTest extends TestCase
{
    public function testEquality(): void
    {
        $this->assertSame(
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,  3, 4, 5, 6],
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 33, 4, 5, 6],
        );
    }
}

При запуске показанного выше теста выводится следующий результат:

./tools/phpunit tests/LongArrayDiffTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) LongArrayDiffTest::testEquality
Failed asserting that two arrays are identical.
--- Expected
+++ Actual
@@ @@
     11 => 0,
     12 => 1,
     13 => 2,
-    14 => 3,
+    14 => 33,
     15 => 4,
     16 => 5,
     17 => 6,
 ]

/path/to/tests/LongArrayDiffTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
Особые случаи

При сбое сравнения PHPUnit создаёт текстовые представления входных значений и сравнивает их. Из-за такой реализации различия могут показывать больше проблем, чем существует на самом деле.

Это происходит только при использовании assertEquals() или других функций «нестрогого» сравнения для массивов или объектов.

Пример 3.3 Особый случай при формировании diff с использованием нестрогого сравнения
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class ArrayWeakComparisonTest extends TestCase
{
    public function testEquality(): void
    {
        $this->assertEquals(
            [1, 2, 3, 4, 5, 6],
            ['1', 2, 33, 4, 5, 6],
        );
    }
}

При запуске показанного выше теста выводится следующий результат:

./tools/phpunit tests/ArrayWeakComparisonTest.php
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.7

F                                                                   1 / 1 (100%)

Time: 00:00, Memory: 28.00 MB

There was 1 failure:

1) ArrayWeakComparisonTest::testEquality
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
-    0 => 1
+    0 => '1'
     1 => 2
-    2 => 3
+    2 => 33
     3 => 4
     4 => 5
     5 => 6
 )

/path/to/tests/ArrayWeakComparisonTest.php:8

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

В этом примере сообщается о различии в первом индексе между 1 и '1', хотя assertEquals() считает эти значения совпадающими.

Сводка

В этом разделе содержится сводка выполнения набора тестов.

  • Если ни один тест не завершился с ошибкой выполнения или сбоем, сводка будет OK

  • Если тест завершился с ошибкой выполнения, сводка будет ERRORED!

  • Если тест завершился сбоем и ни один тест не завершился с ошибкой выполнения, сводка будет FAILED!

  • Если ошибок выполнения и сбоев не было, но тест был пропущен, сводка будет OK, but some tests were skipped!

  • Если ошибок выполнения, сбоев и пропущенных тестов не было, но возникли проблемы, сводка будет OK, but there were issues!

--fail-on-*

Обратите внимание: если вы используете, например, параметры CLI вроде --fail-on-deprecation или соответствующие им параметры конфигурации XML, это влияет только на код завершения оболочки средства запуска тестов. Это не влияет на то, будет ли OK выведено в разделе сводки.

Этот раздел можно отключить с помощью параметра CLI --no-output.

Альтернативные форматы вывода

PHPUnit поддерживает альтернативные форматы вывода, заменяющие стандартный вывод хода выполнения и результатов.

TestDox

Параметр --testdox заменяет стандартный вывод результатов форматом TestDox. Подробности см. в разделе TestDox.

Отладка

Параметр --debug заменяет стандартный вывод хода выполнения и результатов подробной информацией о каждом событии процесса выполнения тестов. При сочетании с --with-telemetry добавляются сведения о времени выполнения и использовании памяти.

TeamCity

Параметр --teamcity заменяет стандартный вывод хода выполнения и результатов форматом TeamCity. Он используется для интеграции с PhpStorm или TeamCity.

Компактный формат

Параметр --compact заменяет стандартный вывод хода выполнения и результатов компактным форматом, содержащим только практически важные сведения: в нём нет раздела хода выполнения, строки со сведениями о времени выполнения и использовании памяти, а также цветов. Если все тесты пройдены, выводятся только раздел со сведениями о среде выполнения и одна строка сводки:

$ ./tools/phpunit --compact tests
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime: PHP 8.5.5

OK (4699 tests, 13576 assertions)

Если тесты завершаются сбоем или возникают другие проблемы, каждый дефект выводится отдельным чётко обозначенным блоком с именем теста, сообщением утверждения и расположением файла:

$ ./tools/phpunit --compact tests
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime: PHP 8.5.5

FAILURES (23 tests, 42 assertions, 1 failure)

--- FAILURE: ExampleTest::testSomething
Failed asserting that false is true.

/path/to/tests/ExampleTest.php:47

Строка сводки начинается с OK, если все тесты пройдены, с FAILURES, если хотя бы один тест завершился сбоем, и с ERRORS, если хотя бы один тест завершился с ошибкой выполнения. Далее указываются количество выполненных тестов и проверенных утверждений, а также, если оно ненулевое, количество ошибок выполнения, сбоев, сообщений об устаревании, предупреждений, уведомлений, пропущенных, неполных и рискованных тестов.

Дефекты перечисляются в следующем порядке: ошибки выполнения, сбои, сообщения об устаревании, предупреждения, уведомления, ошибки, вызванные тестами, рискованные тесты, неполные тесты, пропущенные тесты.

По умолчанию подробно отображаются только ошибки выполнения, сбои и рискованные тесты. Как и стандартный вывод, --compact учитывает флаги –display-*: используйте --display-deprecations, --display-warnings, --display-notices, --display-errors, --display-incomplete, --display-skipped или --display-all-issues, чтобы выводить дополнительные сведения.

Компактный формат можно также включить, присвоив переменной среды PHPUNIT_COMPACT_OUTPUT значение 1. Это позволяет легко включить компактный вывод глобально, не меняя способ вызова PHPUnit, например при запуске тестов в помощнике по программированию на основе ИИ, где каждый токен вывода тестов расходует бюджет контекстного окна.

Примечание

Если заданы и переменная среды PHPUNIT_COMPACT_OUTPUT, и параметр CLI --compact, используется компактный формат. Параметр CLI --compact нельзя сочетать с --teamcity, --testdox, --testdox-summary, --debug или --no-output.

Управление выводом

Следующие параметры управляют отображением раздела результатов тестов. По умолчанию выводятся только сведения об ошибках выполнения и сбоях. Используйте эти параметры, чтобы выводить дополнительные сведения:

  • --display-incomplete выводит подробные сведения о неполных тестах

  • --display-skipped выводит подробные сведения о пропущенных тестах

  • --display-deprecations выводит подробные сведения о сообщениях об устаревании, вызванных тестами

  • --display-notices выводит подробные сведения об уведомлениях, вызванных тестами

  • --display-warnings выводит подробные сведения о предупреждениях, вызванных тестами

  • --display-errors выводит подробные сведения об ошибках, вызванных тестами

  • --display-all-issues включает все перечисленные выше параметры

Параметр --colors=<flag> управляет использованием цветов в выводе терминала. Допустимые значения: never, auto (использовать цвета, если терминал их поддерживает) и always.

Параметр --columns управляет шириной вывода хода выполнения. Используйте --columns max, чтобы задействовать всю ширину терминала.

Параметр --reverse-list выводит дефекты в обратном порядке, показывая сначала последние обнаруженные.

Полный перечень параметров отчётности см. в разделе Отчётность.

Взаимодействие параметров вывода

Описанные выше параметры делятся на две группы:

  • --no-output, --no-progress и --no-results скрывают разделы стандартного формата вывода, описанного в разделе Вывод.

  • --testdox, --teamcity, --compact и --debug выбирают альтернативный формат вывода, заменяющий стандартный вывод хода выполнения и результатов.

Параметры --no-* применяются только к стандартному формату вывода. Они не скрывают вывод, создаваемый альтернативным форматом. Например, --testdox --no-output по-прежнему будет выводить результат в формате TestDox.

Параметры --testdox-html и --testdox-text предназначены для журналирования (см. раздел Журналирование): они записывают отчёт в формате TestDox в файл. Они не предназначены для замены или дополнения вывода в консоль. Используйте --testdox, если хотите получить вывод в формате TestDox в консоли.

Коды завершения

При завершении средство запуска тестов PHPUnit командной строки возвращает код, указывающий результат запуска тестов. Это особенно важно для конвейеров непрерывной интеграции (CI) и сценариев, которым необходимо реагировать на результат запуска тестов.

0

Все тесты пройдены (нет ошибок выполнения и сбоев)

1

Хотя бы один тест завершился сбоем

2

Хотя бы один тест завершился с ошибкой выполнения

По умолчанию такие проблемы, как сообщения об устаревании, уведомления, предупреждения и рискованные тесты, не влияют на код завершения. Семейство параметров --fail-on-* меняет это поведение:

  • --fail-on-warning возвращает код завершения, сигнализирующий о сбое, если любой тест вызывает предупреждение

  • --fail-on-risky возвращает код завершения, сигнализирующий о сбое, если любой тест признан рискованным

  • --fail-on-deprecation возвращает код завершения, сигнализирующий о сбое, если любой тест вызывает сообщение об устаревании

  • --fail-on-notice возвращает код завершения, сигнализирующий о сбое, если любой тест вызывает уведомление

  • --fail-on-skipped возвращает код завершения, сигнализирующий о сбое, если любой тест пропущен

  • --fail-on-incomplete возвращает код завершения, сигнализирующий о сбое, если любой тест помечен как неполный

  • --fail-on-empty-test-suite возвращает код завершения, сигнализирующий о сбое, если не было выполнено ни одного теста

  • --fail-on-all-issues включает все перечисленные выше параметры

Эти параметры часто используются в конвейерах CI для обеспечения строгих стандартов качества:

$ ./tools/phpunit --fail-on-deprecation --fail-on-notice --fail-on-warning
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.3
Configuration: /path/to/project/phpunit.xml

DW                                                                  2 / 2 (100%)

Time: 00:00.077, Memory: 10.00 MB

OK, but there were issues!
Tests: 2, Assertions: 2, Deprecations: 1, Warnings: 1.

Для параметров --fail-on-* существуют соответствующие параметры --do-not-fail-on-*, с помощью которых можно переопределить настройки из файла конфигурации XML.

Полный перечень см. в разделе Выполнение.

Досрочная остановка

Если набор тестов большой, бывает полезно остановить выполнение сразу после обнаружения проблемы, а не ждать завершения всего набора.

Это регулируется семейством параметров --stop-on-*:

  • --stop-on-defect[=<n>] останавливает выполнение после первой (или n-й) ошибки выполнения, сбоя, предупреждения или рискованного теста

  • --stop-on-error[=<n>] останавливает выполнение после первой (или n-й) ошибки выполнения

  • --stop-on-failure[=<n>] останавливает выполнение после первого (или n-го) сбоя

  • --stop-on-warning[=<n>] останавливает выполнение после первого (или n-го) предупреждения

  • --stop-on-risky[=<n>] останавливает выполнение после первого (или n-го) рискованного теста

  • --stop-on-deprecation[=<n>] останавливает выполнение после первого (или n-го) сообщения об устаревании

  • --stop-on-notice[=<n>] останавливает выполнение после первого (или n-го) уведомления

  • --stop-on-skipped[=<n>] останавливает выполнение после первого (или n-го) пропущенного теста

  • --stop-on-incomplete[=<n>] останавливает выполнение после первого (или n-го) неполного теста

Если значение не указано, эти параметры останавливают выполнение при первом обнаружении проблемы. Если задан порог n (например, --stop-on-failure=3), выполнение продолжается, пока не будет обнаружено n таких случаев.

Полный перечень см. в разделе Выполнение.

Журналирование

PHPUnit может записывать результаты тестов в файлы журналов в различных форматах:

  • --log-otr <file> записывает результаты тестов в формате XML Open Test Reporting (OTR) (рекомендуется)

  • --log-junit <file> записывает результаты тестов в формате XML JUnit (устаревший формат)

  • --log-teamcity <file> записывает результаты тестов в формате TeamCity (используется PhpStorm)

  • --testdox-html <file> записывает результаты тестов в формате TestDox в файл HTML

  • --testdox-text <file> записывает результаты тестов в формате TestDox в обычный текстовый файл

  • --log-events-text <file> записывает все события средства запуска тестов в виде обычного текста

  • --log-events-verbose-text <file> записывает все события средства запуска тестов с расширенной информацией

Эти файлы журналов часто используются для интеграции с инструментами CI и формирования отчётов.

Параметры --testdox-html и --testdox-text записывают отчёт в файл; они не предназначены для замены или дополнения вывода в консоль. Для вывода в формате TestDox в консоли используйте --testdox (см. TestDox).

Журналирование также можно настроить в файле конфигурации XML (см. Элемент <logging>).

Параметр --no-logging игнорирует все настройки журналирования, заданные в файле конфигурации XML.

Порядок выполнения тестов

Параметр --order-by управляет порядком выполнения тестов. Поддерживаются следующие значения:

default

Тесты выполняются в порядке обнаружения

defects

Сначала выполняются тесты, завершившиеся сбоем при предыдущем запуске. Для этого требуется кэш результатов (включён по умолчанию, см. --cache-result)

duration

Тесты упорядочиваются по длительности, сначала самые короткие. Для этого требуется кэш результатов

random

Тесты выполняются в случайном порядке. Используйте --random-order-seed, чтобы порядок можно было воспроизвести

reverse

Тесты выполняются в обратном порядке обнаружения

size

Тесты упорядочиваются по размеру (маленькие, средние, большие, неизвестные)

depends

Порядок тестов изменяется для соблюдения объявлений #[Depends]

no-depends

Порядок тестов не изменяется для соблюдения объявлений #[Depends]

Можно сочетать несколько значений: --order-by defects,random сначала запускает тесты, ранее завершившиеся сбоем, а затем выполняет остальные тесты в случайном порядке.

Доступны сокращённые псевдонимы: --resolve-dependencies (для --order-by depends), --ignore-dependencies (для --order-by no-depends), --random-order (для --order-by random) и --reverse-order (для --order-by reverse).

$ ./tools/phpunit --order-by random --random-order-seed 42
PHPUnit 13.2.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.5.3
Configuration: /path/to/project/phpunit.xml
Random seed:   42

..                                                                  2 / 2 (100%)

Time: 00:00.077, Memory: 10.00 MB

OK (2 tests, 2 assertions)

Полный перечень см. в разделе Выполнение.

© 2005–2026 Sebastian Bergmann
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://docs.phpunit.de/en/13.2/textui.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API