Skip to content

Latest commit

 

History

History
208 lines (123 loc) · 10.9 KB

1.04 Запуск UNIT тестов.md

File metadata and controls

208 lines (123 loc) · 10.9 KB

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

Список параметров, которые можно указать в командной строке можно получить, указав параметр --help

phpunit –help

phpunit UnitTest

Выполняет тесты, представленные в классе UnitTest. Предполагается что этот класс объявлен в файле UnitTest.php. Класс UnitTest должен наследовать PHPUnit_Framework_TestCase или предоставлять метод public static suite(), который возвращает объект типа PHPUnit_Framework_Test. Например, экземпляр класса PHPUnit_Framework_TestSuite.

phpunit UnitTest UnitTest.php

Выполняет тесты из класса UnitTest. Этот класс должен быть объявлен в указанном файле.

--log-junit

Генерирует файл логов в формате JUnit XML для всех пройденных тестов

--log-tap

Генерирует файл логов, используя формат Test Anything Protocol (TAP) для пройденных тестов.

--log-json

Генерирует файл логов, используя JSON формат

--coverage-html

Генерирует отчёт о покрытии кода в формате HTML. Более детальную информацию см. Code Coverage Analysis . Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--coverage-clover

Генерирует файл логов в формате XML для пройденных тестов. Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--coverage-php

Генерирует сериализованый (serialized) объект класса PHP_CodeCoverage с информацией о покрытии. Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--coverage-text

Генерирует файл логов или вывод в командной строке в человеко-читаемом формате. Обратите внимание, что эта функциональность доступна, если установлены расширения tokenizer и Xdebug.

--testdox-html и --testdox-text

Генерирует agile документацию в текстовом или HTML формате для всех запущеных тестов. Более детальную информацию см. Глава 15, Другие использования тестов .

--filter

Вызывает только те тесты, которые содержат в себе заданный фильтр. Фильтром может быть название (или подстрока) теста, или же регулярное выражение, которое соответствует нескольким названиям тестов.

--group

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

--exclude-group

Исключает тесты указанных групп. Тест может принадлежать группе, если он помечен аннотацией @group.

--list-groups

Выводит список возможных групп тестов.

--loader

Указывает какую реализацию загрузчика PHPUnit_Runner_TestSuiteLoader использовать. Стандартная реализация загрузчика будет искать исходные файлы тестов в текущей директории и всех директориях указанных в директиве include_path. Названия классов должны следовать конвенции PEAR Naming Conventions. Например, класс Project_Package_Class должен быть реализован в файле Project/Package/Class.php.

--printer

Указывает какую реализацию форматирования вывода использовать. Этот класс должен наследовать PHPUnit_Util_Printer и реализовывать интерфейс PHPUnit_Framework_TestListener.

--repeat

Уазывает сколько раз прогнать тесты по кругу.

--tap

Выводит отчет в формате Test Anything Protocol (TAP).

--testdox

Выводит результат тестов в виде документации agile. Более детальную информацию см. Другие использования тестов .

--colors

Использовать цвета при выводе.

--stderr

Выводить в STDERR вместо STDOUT.

--stop-on-error

Остановить выполнение при возникновении первой ошибки.

--stop-on-failure

Остановить выполнение при возникновении первой ошибки или провала.

--stop-on-skipped

Остановить выполнение при первом пропущенном тесте.

--stop-on-incomplete

Остановить выполнение при первом незавершенном тесте.

--strict

Выполнять тесты в строгом (strict) режиме.

--verbose

Выводить дополнительную информацию. Например, названия тестов, которые были пропущены или не завершены.

--process-isolation

Выполнять каждый тест в отдельном потоке PHP.

--no-globals-backup

Не сохранять и восстанавливать $GLOBALS.

--static-backup

Сохранять и восстанавливать статические аттрибуты тестируемых классов.

--bootstrap

"Bootstrap" - PHP файл, который будет запущен перед запуском тестов.

--configuration, -c

Прочитать настройки из файла в формате XML. Если файл phpunit.xml или phpunit.xml.dist существует (в этом порядке) в текущей директории и опция --configuration не использована - файл настроек автоматически будет прочитан.

--no-configuration

Игнорировать файл phpunit.xml и phpunit.xml.dist, находящиеся в текущей папке.

--include-path

Добавить указанный(е) пути в начало директивы PHP include_path.

-d

Устанавливает заданный(е) параметр(ы) конфигурации PHP.

--debug

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

Использование файла настроек XML для составления тест-комплектов

Также, для составления тест-комплектов, можно использовать файл настроек XML для PHPUnit показывает элементарный пример, который добавит все классы с маской *Test, которые находятся в файлах *Test.php. При поиске тест-кейсов директория Tests обходится рекурсивно.   ####Пример Использование файла настроек XML для составления тест-комплектов

<phpunit>
    <testsuites>
        <testsuite name="Object_Freezer">
            <directory>Tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

Порядок, в котором будут выполнены тест-кейсы, можно указать следующим образом:   ####Использование файла настроек XML для составления тест-комплектов с указанием точного порядка выполнения тест-кейсов

<phpunit>
    <testsuites>
        <testsuite name="Object_Freezer">
            <file>Tests/Freezer/HashGenerator/NonRecursiveSHA1Test.php</file>
            <file>Tests/Freezer/IdGenerator/UUIDTest.php</file>
            <file>Tests/Freezer/UtilTest.php</file>
            <file>Tests/FreezerTest.php</file>
            <file>Tests/Freezer/StorageTest.php</file>
            <file>Tests/Freezer/Storage/CouchDB/WithLazyLoadTest.php</file>
            <file>Tests/Freezer/Storage/CouchDB/WithoutLazyLoadTest.php</file>
        </testsuite>
    </testsuites>
</phpunit>

Для каждого теста PHPUnit выводит на экран один символ:

. Выводится, если тест прошел.

F Выводится, если тест провалился.

E Выводится когда возникает ошибка.

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

I Выводится, если тест помечен как "незавершён" или "ещё не реализован"

PHPUnit разделяет статусы провал и ошибка. Провал выводится в случае, если утверждение не выполняется assertEquals(). Ошибкой может являться непойманное исключение или ошибка PHP. Иногда это разграничение становится полезным, потому что, обычно, ошибки проще исправить чем провалы. Если в проекте выявлен большой список проблем - следует сперва обратить внимание на ошибки, и, затем, проверить оставшиеся провалы.