Средство запуска тестов командной строки
Средство запуска тестов 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:
Выведите список всех идентификаторов тестов:
phpunit --list-test-ids > test-ids.txtРазделите файл на группы или отфильтруйте его
Запустите группу:
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 старается предоставить как можно больше контекста, который поможет определить проблему.
<?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 разобьёт его на части и покажет несколько строк контекста вокруг каждого различия.
<?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() или других функций «нестрогого» сравнения для массивов или объектов.
<?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