PHP Unit - тестовые наборы не могут работать изолированно друг от друга - PullRequest
0 голосов
/ 02 марта 2020

У меня есть phpunit. xml файл конфигурации с 3 наборами тестов (suite_1, suite_2, suite_3), подобный этому:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.1/phpunit.xsd"
        backupGlobals="false"
        backupStaticAttributes="false"
        cacheTokens="false"
        colors="true"
        convertErrorsToExceptions="false"
        convertNoticesToExceptions="true"
        convertWarningsToExceptions="true"
        forceCoversAnnotation="false"
        processIsolation="true"
        stopOnError="true"
        stopOnFailure="false"
        stopOnIncomplete="false"
        stopOnSkipped="false"
        stopOnRisky="false"
        timeoutForSmallTests="10"
        timeoutForMediumTests="30"
        timeoutForLargeTests="60"
        stderr="true"
        verbose="true">
    <testsuites>
        <testsuite name="SUITE_1">
            <directory>path_to_test_files</directory>
        </testsuite>
        <testsuite name="SUITE_2">
            <directory>path_to_test_files</directory>
        </testsuite>
        <testsuite name="SUITE_3">
            <directory>path_to_test_files</directory>
        </testsuite>
    </testsuites>
</phpunit>

Все комплекты используют одну зависимость - (php monolog library)

SUITE_1 и SUITE_3 все исправны и работают.

Для SUITE_2 по некоторым причинам поставщики не установлены.

Если я запускаю только SUITE_2 , тесты не выполняются с ошибкой PHP (отсутствуют классы поставщиков).

Но: Если я запускаю все наборы, SUITE_1 загружает необходимые классы и SUITE_2 успешно проходит.

Я поигрался с атрибутом ' processIsolation = true ', который должен запускать наборы тестов в изолированных процессах, но это не сработало.

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

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

Как я могу контролировать это поведение?

PHPUnit равно 8.5.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...