Spec-Zone.ru › PHPUnit

Атрибуты

Атрибуты — это «форма структурированных, синтаксических метаданных для деклараций классов, свойств, функций, методов, параметров и констант. Атрибуты позволяют определить директивы конфигурации, непосредственно встроенные в объявление этого кода».

Все поддерживаемые PHPUnit атрибуты объявлены в пространстве имен PHPUnit\Framework\Attributes. Они документированы в этом приложении.

Test

Уровень класса

Уровень метода

Повторяемый

нет

да

нет

В качестве альтернативы добавлению префикса test к именам ваших тестовых методов, вы можете использовать атрибут Test, чтобы отметить его как тестовый метод.

Пример 2.16 Использование атрибута Test
<?php declare(strict_types=1);
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\TestCase;

final class ExampleTest extends TestCase
{
    #[Test]
    public function it_does_something(): void
    {
        // ...
    }
}

TestDox

Уровень класса

Уровень метода

Повторяемый

да

да

нет

Атрибут TestDox(string $text) может быть использован для настройки текста, который будет выводиться для теста, когда включен вывод TestDox.

Пример 2.17 Использование атрибута TestDox
<?php declare(strict_types=1);
use PHPUnit\Framework\Attributes\TestDox;
use PHPUnit\Framework\TestCase;

final class ExampleTest extends TestCase
{
    #[TestDox('It does something')]
    public function testOne(): void
    {
        // ...
    }
}

Запуск теста, показанного выше, с включенным выводом TestDox, даёт вывод, показанный ниже:

$ ./tools/phpunit --no-progress --testdox tests/ExampleTest.php
PHPUnit 12.0.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.2

Time: 00:00.057, Memory: 6.00 MB

Example
 ✔ It does something

OK (1 test, 1 assertion)

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

Пример 2.18 Использование атрибута TestDox вместе с поставщиками данных
<?php declare(strict_types=1);
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\TestDox;
use PHPUnit\Framework\TestCase;

final class ExampleTest extends TestCase
{
    #[DataProvider('additionProvider')]
    #[TestDox('Adding $a to $b results in $expected')]
    public function testAdd(int $expected, int $a, int $b)
    {
        $this->assertSame($expected, $a + $b);
    }

    public static function additionProvider()
    {
        return [
            'data set 1' => [0, 0, 0],
            'data set 2' => [1, 0, 1],
            'data set 3' => [1, 1, 0],
            'data set 4' => [3, 1, 1]
        ];
    }
}

Запуск теста, показанного выше, с включенным выводом TestDox, даёт вывод, показанный ниже:

$ ./tools/phpunit --no-progress --testdox tests/ExampleTest.php
PHPUnit 12.0.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.2

Time: 00:00.116, Memory: 8.00 MB

Example
 ✔ Adding 0 to 0 results in 0
 ✔ Adding 1 to 0 results in 1
 ✔ Adding 0 to 1 results in 1
 ✘ Adding 1 to 1 results in 3
   │
   │ Failed asserting that 2 is identical to 3.
   │
   │ /path/to/ExampleTest.php:12
   │

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

Кроме того, $_dataName доступен и содержит имя текущего набора данных. Это data set 1 через data set 4 в показанном выше примере.

DisableReturnValueGenerationForTestDoubles

Уровень класса

Уровень метода

Повторяемый

да

нет

нет

Атрибут DisableReturnValueGenerationForTestDoubles может быть использован для отключения генерации возвращаемых значений для тестовых двойников, созданных с использованием createMock(), createMockForIntersectionOfInterfaces(), createPartialMock(), createStub() и createStubForIntersectionOfInterfaces() для всех тестов класса тестового случая.

DoesNotPerformAssertions

Уровень класса

Уровень метода

Повторяемый

да

да

нет

По умолчанию, PHPUnit считает тест, который не выполняет утверждения и не настраивает ожидания для объектов-моков, как рискованный. Атрибут DoesNotPerformAssertions может быть использован для предотвращения этого.

IgnoreDeprecations

Уровень класса

Уровень метода

Повторяемый

да

да

нет

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

WithoutErrorHandler

Уровень класса

Уровень метода

Повторяемый

нет

да

нет

Атрибут WithoutErrorHandler может быть использован для отключения обработчика ошибок PHPUnit для тестового метода.

Предупреждение

Функции PHPUnit, которые полагаются на активность обработчика ошибок PHPUnit во время выполнения тестового метода, не будут работать, когда обработчик PHPUnit отключён. Никакие E_(USER_)* ошибки, сгенерированные PHP, не будут обработаны PHPUnit, когда его обработчик ошибок отключён.

Вы должны отключать обработчик ошибок PHPUnit только тогда, когда он мешает коду, который вы тестируете, например, когда он использует error_get_last() для реакции на E_(USER_)* ошибки, сгенерированные PHP.

Покрытие кода

CoversClass

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут CoversClass(string $className) может быть использован для указания, что тест нацелен на покрытие указанного класса.

CoversClassesThatImplementInterface

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут CoversClassesThatImplementInterface(string $interfaceName) может быть использован для указания, что тест нацелен на покрытие реализаций данного интерфейса.

CoversClassesThatExtendClass

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут CoversClassesThatExtendClass(string $className) может быть использован для указания, что тест нацелен на покрытие дочерних классов данного родительского класса.

CoversTrait

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут CoversTrait(string $traitName) может быть использован для указания, что тест нацелен на покрытие данного трейта.

CoversMethod

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут CoversMethod(string $className, string $methodName) может быть использован для указания, что тест нацелен на покрытие данного метода.

CoversFunction

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут CoversFunction(string $functionName) может быть использован для указания, что тест нацелен на покрытие данной функции.

CoversNothing

Уровень класса

Уровень метода

Повторяемо

да

да

нет

Атрибут CoversNothing() может быть использован для указания, что тест не нацелен на вклад в покрытие кода.

UsesClass

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут UsesClass(string $className) может быть использован для указания, что тест разрешает выполнение кода в данном классе, но не нацелен на его покрытие. Это актуально в контексте предотвращения непреднамеренного покрытия кода.

UsesClassesThatImplementInterface

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут UsesClassesThatImplementInterface(string $interfaceName) может быть использован для указания, что тест разрешает выполнение кода в классах, реализующих данный интерфейс, но не нацелен на его покрытие. Это актуально в контексте предотвращения непреднамеренного покрытия кода.

UsesClassesThatExtendClass

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут UsesClassesThatExtendClass(string $className) может быть использован для указания, что тест разрешает выполнение кода в дочерних классах, расширяющих данный родительский класс, но не нацелен на его покрытие. Это актуально в контексте предотвращения непреднамеренного покрытия кода.

UsesTrait

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут UsesTrait(string $traitName) может быть использован для указания, что тест разрешает выполнение кода в данном трейте, но не нацелен на его покрытие. Это актуально в контексте предотвращения непреднамеренного покрытия кода.

UsesMethod

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут UsesMethod(string $className) может быть использован для указания, что тест разрешает выполнение кода в данном методе, но не нацелен на его покрытие. Это актуально в контексте предотвращения непреднамеренного покрытия кода.

UsesFunction

Уровень класса

Уровень метода

Повторяемо

да

нет

да

Атрибут UsesFunction(string $functionName) может быть использован для указания, что тест разрешает выполнение кода в данной глобальной функции, но не нацелен на его покрытие. Это актуально в контексте предотвращения непреднамеренного покрытия кода.

Поставщик данных

DataProvider

Уровень класса

Уровень метода

Повторяемый

нет

да

да

Атрибут DataProvider(string $methodName) может использоваться в методе теста для указания статического метода, объявленного в том же классе, что и метод теста, в качестве поставщика данных.

DataProviderExternal

Уровень класса

Уровень метода

Повторяемый

нет

да

да

Атрибут DataProviderExternal(string $className, string $methodName) может использоваться в методе теста для указания статического метода, объявленного в другом классе, в качестве поставщика данных.

TestWith

Уровень класса

Уровень метода

Повторяемый

нет

да

да

Атрибут TestWith(array $data) может использоваться для определения поставщика данных для метода теста без необходимости реализации статического метода поставщика данных.

Пример 2.19 Использование атрибута TestWith
<?php declare(strict_types=1);
use PHPUnit\Framework\Attributes\TestWith;
use PHPUnit\Framework\TestCase;

final class DataTest extends TestCase
{
    #[TestWith([0, 0, 0])]
    #[TestWith([0, 1, 1])]
    #[TestWith([1, 0, 1])]
    #[TestWith([1, 1, 3])]
    public function testAdd(int $a, int $b, int $expected): void
    {
        $this->assertSame($expected, $a + $b);
    }
}

Запуск показанного выше теста приводит к выводу, показанному ниже:

./tools/phpunit tests/DataTest.php
PHPUnit 12.0.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.2

...F                                                                4 / 4 (100%)

Time: 00:00.058, Memory: 8.00 MB

There was 1 failure:

1) DataTest::testAdd with data set #3
Failed asserting that 2 is identical to 3.

/path/to/DataTest.php:10

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

TestWithJson

Уровень класса

Уровень метода

Повторяемый

нет

да

да

Атрибут TestWithJson(string $json) может использоваться для определения поставщика данных для метода теста без необходимости реализации статического метода поставщика данных.

Пример 2.20 Использование атрибута TestWithJson
<?php declare(strict_types=1);
use PHPUnit\Framework\Attributes\TestWithJson;
use PHPUnit\Framework\TestCase;

final class DataTest extends TestCase
{
    #[TestWithJson('[0, 0, 0]')]
    #[TestWithJson('[0, 1, 1]')]
    #[TestWithJson('[1, 0, 1]')]
    #[TestWithJson('[1, 1, 3]')]
    public function testAdd(int $a, int $b, int $expected): void
    {
        $this->assertSame($expected, $a + $b);
    }
}

Запуск показанного выше теста приводит к выводу, показанному ниже:

./tools/phpunit tests/DataTest.php
PHPUnit 12.0.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.2

...F                                                                4 / 4 (100%)

Time: 00:00.058, Memory: 8.00 MB

There was 1 failure:

1) DataTest::testAdd with data set #3
Failed asserting that 2 is identical to 3.

/path/to/DataTest.php:10

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

Зависимости тестов

Depends

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут Depends(string $methodName) можно использовать для указания того, что тест зависит от другого теста, объявленного в том же классе.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся без клонирования.

DependsUsingDeepClone

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsUsingDeepClone(string $methodName) можно использовать для указания того, что тест зависит от другого теста, объявленного в том же классе.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся после глубокого клонирования.

DependsUsingShallowClone

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsUsingShallowClone(string $methodName) можно использовать для указания того, что тест зависит от другого теста, объявленного в том же классе.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся после поверхностного клонирования.

DependsExternal

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsExternal(string $className, string $methodName) можно использовать для указания того, что тест зависит от другого теста, объявленного в другом классе.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся без клонирования.

DependsExternalUsingDeepClone

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsExternalUsingDeepClone(string $className, string $methodName) можно использовать для указания того, что тест зависит от другого теста, объявленного в другом классе.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся после глубокого клонирования.

DependsExternalUsingShallowClone

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsExternalUsingShallowClone(string $className, string $methodName) можно использовать для указания того, что тест зависит от другого теста, объявленного в другом классе.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся после поверхностного клонирования.

DependsOnClass

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsOnClass(string $className) можно использовать для указания того, что тест зависит от всех тестов другого класса.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся без клонирования.

DependsOnClassUsingDeepClone

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsOnClassUsingDeepClone(string $className) можно использовать для указания того, что тест зависит от всех тестов другого класса.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся после глубокого клонирования.

DependsOnClassUsingShallowClone

Уровень класса

Уровень метода

Повторяемость

нет

да

да

Атрибут DependsOnClassUsingShallowClone(string $className) можно использовать для указания того, что тест зависит от всех тестов другого класса.

Любое значение, передаваемое от производителя (зависимого теста) к потребителю (зависимому тесту), передаётся после поверхностного клонирования.

Группы тестов

Group

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут Group(string $name) может использоваться для назначения тестов группам тестов.

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

Строки small, medium и large не могут использоваться в качестве имён групп.

Small

Уровень класса

Уровень метода

Повторяемо

да

нет

нет

Атрибут Small помечает тесты класса тестового случая как малые. Эти тесты добавляются в специальную группу тестов с именем small, которая имеет специальную семантику.

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

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

Medium

Уровень класса

Уровень метода

Повторяемо

да

нет

нет

Атрибут Medium помечает тесты класса тестового случая как средние. Эти тесты добавляются в специальную группу тестов с именем medium, которая имеет специальную семантику.

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

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

Large

Уровень класса

Уровень метода

Повторяемо

да

нет

нет

Атрибут Large помечает тесты класса тестового случая как большие. Эти тесты добавляются в специальную группу тестов с именем large, которая имеет специальную семантику.

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

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

Ticket

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут Ticket(string $text) является псевдонимом для Group(string $text).

Методы шаблонов

BeforeClass

Уровень класса

Уровень метода

Повторяемость

нет

да

нет

Атрибут BeforeClass(int $priority = 0) может быть использован для указания, что публичный статический метод должен вызываться до первого тестового метода класса тестового случая. Это та же фаза, где вызывается метод с именем setUpBeforeClass(). Мы называем такие методы методами «перед классом теста».

Если класс тестового случая имеет более одного метода с атрибутом BeforeClass, то по умолчанию тестовый запуск предполагает, что порядок вызова этих методов не важен. Если это предположение неверно и порядок вызова этих методов важен, то необязательный аргумент атрибута $priority (неотрицательное целое число) может быть использован для определения желаемого порядка вызова: метод с большим значением $priority вызывается перед методом с меньшим значением $priority.

Before

Уровень класса

Уровень метода

Повторяемость

нет

да

нет

Атрибут Before(int $priority = 0) может быть использован для указания, что защищённый нестатический метод должен вызываться перед каждым тестовым методом класса тестового случая. Это та же фаза, где вызывается метод с именем setUp(). Мы называем такие методы методами «перед тестом».

Если класс тестового случая имеет более одного метода с атрибутом Before, то по умолчанию тестовый запуск предполагает, что порядок вызова этих методов не важен. Если это предположение неверно и порядок вызова этих методов важен, то необязательный аргумент атрибута $priority (неотрицательное целое число) может быть использован для определения желаемого порядка вызова: метод с большим значением $priority вызывается перед методом с меньшим значением $priority.

PreCondition

Уровень класса

Уровень метода

Повторяемость

нет

да

нет

Атрибут PreCondition(int $priority = 0) может быть использован для указания, что защищённый нестатический метод должен вызываться перед каждым тестовым методом (но после любых методов «перед тестом») класса тестового случая. Это та же фаза, где вызывается метод с именем assertPreConditions(). Мы называем такие методы методами «предварительные условия».

Если класс тестового случая имеет более одного метода с атрибутом PreCondition, то по умолчанию тестовый запуск предполагает, что порядок вызова этих методов не важен. Если это предположение неверно и порядок вызова этих методов важен, то необязательный аргумент атрибута $priority (неотрицательное целое число) может быть использован для определения желаемого порядка вызова: метод с большим значением $priority вызывается перед методом с меньшим значением $priority.

PostCondition

Уровень класса

Уровень метода

Повторяемость

нет

да

нет

Атрибут PostCondition(int $priority = 0) может быть использован для указания, что защищённый нестатический метод должен вызываться после каждого тестового метода (но перед любыми методами «после теста») класса тестового случая. Это та же фаза, где вызывается метод с именем assertPostConditions(). Мы называем такие методы методами «после условия».

Если класс тестового случая имеет более одного метода с атрибутом PostCondition, то по умолчанию тестовый запуск предполагает, что порядок вызова этих методов не важен. Если это предположение неверно и порядок вызова этих методов важен, то необязательный аргумент атрибута $priority (неотрицательное целое число) может быть использован для определения желаемого порядка вызова: метод с большим значением $priority вызывается перед методом с меньшим значением $priority.

After

Уровень класса

Уровень метода

Повторяемость

нет

да

нет

Атрибут After(int $priority = 0) может быть использован для указания, что защищённый нестатический метод должен вызываться после каждого тестового метода класса тестового случая. Это та же фаза, где вызывается метод с именем tearDown(). Мы называем такие методы методами «после теста».

Если класс тестового случая имеет более одного метода с атрибутом After, то по умолчанию тестовый запуск предполагает, что порядок вызова этих методов не важен. Если это предположение неверно и порядок вызова этих методов важен, то необязательный аргумент атрибута $priority (неотрицательное целое число) может быть использован для определения желаемого порядка вызова: метод с большим значением $priority вызывается перед методом с меньшим значением $priority.

AfterClass

Уровень класса

Уровень метода

Повторяемость

нет

да

нет

Атрибут AfterClass(int $priority = 0) может быть использован для указания, что публичный статический метод должен вызываться после последнего тестового метода класса тестового случая. Это та же фаза, где вызывается метод с именем tearDownAfterClass(). Мы называем такие методы методами «после класса теста».

Если класс тестового случая имеет более одного метода с атрибутом AfterClass, то по умолчанию тестовый запуск предполагает, что порядок вызова этих методов не важен. Если это предположение неверно и порядок вызова этих методов важен, то необязательный аргумент атрибута $priority (неотрицательное целое число) может быть использован для определения желаемого порядка вызова: метод с большим значением $priority вызывается перед методом с меньшим значением $priority.

Изоляция тестов

BackupGlobals

Уровень класса

Уровень метода

Повторяемость

да

да

нет

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

ExcludeGlobalVariableFromBackup

Уровень класса

Уровень метода

Повторяемость

да

да

да

Атрибут ExcludeGlobalVariableFromBackup($globalVariableName) может быть использован для исключения указанной глобальной переменной из операций резервного копирования и восстановления глобальных и сверхглобальных переменных.

BackupStaticProperties

Уровень класса

Уровень метода

Повторяемость

да

да

нет

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

ExcludeStaticPropertyFromBackup

Уровень класса

Уровень метода

Повторяемость

да

да

да

Атрибут ExcludeStaticPropertyFromBackup(string $className, string $propertyName) может быть использован для исключения указанного статического свойства из операций резервного копирования и восстановления статических свойств классов.

RunInSeparateProcess

Уровень класса

Уровень метода

Повторяемость

нет

да

нет

Атрибут RunInSeparateProcess может быть использован для указания, что тест должен быть запущен в отдельном процессе.

RunTestsInSeparateProcesses

Уровень класса

Уровень метода

Повторяемость

да

нет

нет

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

RunClassInSeparateProcess

Уровень класса

Уровень метода

Повторяемость

да

нет

нет

Атрибут RunClassInSeparateProcess может быть использован для указания, что все тесты класса-теста должны быть запущены в одном (единственном) отдельном процессе.

PreserveGlobalState

Уровень класса

Уровень метода

Повторяемость

да

да

нет

Атрибут PreserveGlobalState(bool $enabled) может быть использован для указания, доступен ли глобальное состояние основного процесса запуск тестов PHPUnit в дочернем процессе при запуске теста в отдельном процессе.

Пропуск тестов

RequiresPhp

Уровень класса

Уровень метода

Повторяемо

да

да

нет

Атрибут RequiresPhp(string $versionRequirement) может быть использован для пропуска выполнения теста, если версия PHP, используемая для запуска PHPUnit, не соответствует указанному требованию версии.

$versionRequirement может быть либо строкой с номером версии, которая необязательно предваряется оператором, поддерживаемым функцией PHP version_compare(), либо ограничением версии в синтаксисе, поддерживаемом Composer.

Вот несколько примеров:

  • #[RequiresPhp('8.3.0')]

  • #[RequiresPhp('>= 8.3.0')]

  • #[RequiresPhp('^8.3')]

RequiresPhpExtension

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут RequiresPhpExtension(string $extension[, string $versionRequirement]) может быть использован для пропуска выполнения теста, если указанный PHP-расширение недоступен. Необязательный аргумент $versionRequirement может быть использован для указания требования версии для этого PHP-расширения и следует тому же формату, что описано здесь.

Вот несколько примеров:

  • #[RequiresPhpExtension('mysqli')]

  • #[RequiresPhpExtension('mysqli', '>= 8.3.0')]

  • #[RequiresPhpExtension('mysqli', '^8.3')]

RequiresSetting

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут RequiresSetting(string $setting, string $value) может быть использован для пропуска выполнения теста, если указанное значение настройки PHP не установлено в ожидаемое значение.

RequiresPhpunit

Уровень класса

Уровень метода

Повторяемо

да

да

нет

Атрибут RequiresPhpunit(string $versionRequirement) может быть использован для пропуска выполнения теста, если версия PHPUnit не соответствует указанному требованию версии.

$versionRequirement может быть либо строкой с номером версии, которая необязательно предваряется оператором, поддерживаемым функцией PHP version_compare(), либо ограничением версии в синтаксисе, поддерживаемом Composer.

Вот несколько примеров:

  • #[RequiresPhpunit('10.1.0')]

  • #[RequiresPhpunit('>= 10.1.0')]

  • #[RequiresPhpunit('^10.1')]

RequiresPhpunitExtension

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут RequiresPhpunitExtension(string $extensionClass) может быть использован для пропуска выполнения теста, если расширение PHPUnit, идентифицируемое по классу загрузки, недоступно.

RequiresFunction

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут RequiresFunction(string $functionName) может быть использован для пропуска выполнения теста, если указанная глобальная функция не объявлена.

RequiresMethod

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут RequiresMethod(string $className, string $methodName) может быть использован для пропуска выполнения теста, если указанный метод не объявлен.

RequiresOperatingSystem

Уровень класса

Уровень метода

Повторяемо

да

да

нет

Атрибут RequiresOperatingSystem(string $regularExpression) может быть использован для пропуска выполнения теста, если указанная регулярная выражение не соответствует значению константы PHP_OS, предоставляемой PHP.

RequiresOperatingSystemFamily

Уровень класса

Уровень метода

Повторяемо

да

да

нет

Атрибут RequiresOperatingSystemFamily(string $operatingSystemFamily) может быть использован для пропуска выполнения теста, если указанная строка не идентична значению константы PHP_OS_FAMILY, предоставляемой PHP.

RequiresEnvironmentVariable

Уровень класса

Уровень метода

Повторяемо

да

да

да

Атрибут RequiresEnvironmentVariable(string $environmentVariableName[, string $value]) может быть использован для пропуска выполнения теста, если указанная переменная окружения не установлена. Необязательно, используя аргумент $value, можно указать требуемое значение для переменной окружения.

© 2005–2025 Sebastian Bergmann
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://docs.phpunit.de/en/12.0/attributes.html

Spec-Zone.ru

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