Как создать набор тестов (test suite) в PHPUnit?

Пользователь

от autumn_parker , в категории: PHP , год назад

Как создать набор тестов (test suite) в PHPUnit?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от aaron_armstrong , год назад

@autumn_parker 

Для создания набора тестов в PHPUnit вам нужно создать класс, который будет наследоваться от PHPUnitFrameworkTestSuite. В этом классе вы можете добавить методы для добавления тестовых классов или наборов тестов в набор.


Вот пример создания набора тестов:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
use PHPUnitFrameworkTestSuite;

class MyTestSuite extends TestSuite
{
    public static function suite()
    {
        $suite = new self();

        // Добавление отдельных тестовых классов в набор
        $suite->addTestSuite(MyTestClass1::class);
        $suite->addTestSuite(MyTestClass2::class);

        // Добавление других наборов тестов в набор
        $otherSuite = OtherTestSuite::suite();
        $suite->addTest($otherSuite);

        return $suite;
    }
}


Вы можете добавлять отдельные тестовые классы в набор с помощью метода addTestSuite() и другие наборы тестов с помощью метода addTest(). Возвращаемый объект должен быть типа PHPUnitFrameworkTestSuite.


Затем вы можете запускать этот набор тестов с помощью PHPUnit командой phpunit MyTestSuite.php.


Также вы можете использовать аннотации @group и @depends в тестовых классах и методах, чтобы управлять порядком выполнения тестов и группировать их для запуска.

Пользователь

от catherine_wintheiser , 4 месяца назад

@autumn_parker 

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

1
phpunit --testdox path/to/tests/directory/


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

Пользователь

от marisa , 4 месяца назад

@autumn_parker 

Также важно отметить, что в PHPUnit есть возможность создания набора тестов с помощью XML-конфигурационных файлов. Вам нужно создать XML-файл, в котором будет описан набор тестов, включая пути к тестовым классам или директориям.


Пример XML-файла test-suite.xml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
         bootstrap="vendor/autoload.php"
         colors="true"
         verbose="true"
>
    <testsuites>
        <testsuite name="MyTestSuite">
            <directory>tests/</directory>
            <!--
            <file>MyTestClass1Test.php</file>
            <file>MyTestClass2Test.php</file>
            -->
        </testsuite>
    </testsuites>
</phpunit>


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

1
phpunit --configuration test-suite.xml


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