Php test configuration file

5. Организация тестов

Одна из целей PHPUnit заключается в том, что тесты должны быть составными: мы хотим запускать любое количество или комбинацию тестов вместе, например, все тесты для всего проекта, либо тесты всех классов компонента, который является частью проекта, либо просто тесты для одного класса.

PHPUnit поддерживает различные способы организации тестов и составления их в набор тестов. В этой главе показаны наиболее часто используемые подходы.

Составление набора тестов с помощью файловой системы

Возможно, самый простой способ составить набор тестов — это держать все исходные файлы тестов в тестовом каталоге. PHPUnit может автоматически обнаруживать и запускать тесты путём рекурсивного обхода тестового каталога.

Давайте посмотрим на набор тестов библиотеки sebastianbergmann/money. Просматривая структуру каталогов этого проекта, мы видим, что классы тестов в каталоге tests отражают структуру пакета и классов тестируемой системы в каталоге src :

src tests `-- Currency.php `-- CurrencyTest.php `-- IntlFormatter.php `-- IntlFormatterTest.php `-- Money.php `-- MoneyTest.php `-- autoload.php

Для запуска всех тестов библиотеки нам просто нужно указать исполнителю тестов командной строки PHPUnit каталог с тестами:

$ phpunit --bootstrap src/autoload.php tests PHPUnit |version|.0 by Sebastian Bergmann and contributors. . Time: 636 ms, Memory: 3.50Mb OK (33 tests, 52 assertions) 

Если вы укажите исполнителю тестов командной строки PHPUnit каталог, он будет искать файлы с маской *Test.php

Для запуска только тестов, объявленных в классе CurrencyTest , находящегося в файле tests/CurrencyTest.php , мы можем использовать следующую команду:

$ phpunit --bootstrap src/autoload.php tests/CurrencyTest PHPUnit |version|.0 by Sebastian Bergmann and contributors. . Time: 280 ms, Memory: 2.75Mb OK (8 tests, 8 assertions) 

Для более точного контроля, какие тесты запускать, мы можем использовать опцию —filter :

$ phpunit --bootstrap src/autoload.php --filter testObjectCanBeConstructedForValidConstructorArgument tests PHPUnit |version|.0 by Sebastian Bergmann and contributors. .. Time: 167 ms, Memory: 3.00Mb OK (2 test, 2 assertions) 

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

Составление набора тестов с помощью конфигурации XML

XML-файл конфигурации PHPUnit ( Конфигурационный XML-файл ) также может использоваться для составления набора тестов. Пример 5.1 показывает файл phpunit.xml с минимальной настройкой, который добавит все классы *Test , находящиеся в файлах *Test.php , после рекурсивного обхода каталога tests .

phpunit bootstrap="src/autoload.php"> testsuites> testsuite name="money"> directory>testsdirectory> testsuite> testsuites> phpunit> 

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

Порядок выполнения тестов можно сделать явным:

phpunit bootstrap="src/autoload.php"> testsuites> testsuite name="money"> file>tests/IntlFormatterTest.phpfile> file>tests/MoneyTest.phpfile> file>tests/CurrencyTest.phpfile> testsuite> testsuites> phpunit> 

© Copyright 2018, Sebastian Bergmann. Revision 65b89c43 .

Versions latest Downloads pdf htmlzip epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Источник

3. Конфигурационный XML-файл

Атрибуты элемента можно использовать для настройки основной функциональности PHPUnit.

="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/|version|/phpunit.xsd" backupGlobals="true" backupStaticAttributes="false" ="/path/to/bootstrap.php"--> cacheTokens="false" colors="false" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" forceCoversAnnotation="false" mapTestClassNameToCoveredClassName="false" printerClass="PHPUnit\TextUI\ResultPrinter" ="/path/to/ResultPrinter.php"--> processIsolation="false" stopOnError="false" stopOnFailure="false" stopOnIncomplete="false" stopOnSkipped="false" stopOnRisky="false" testSuiteLoaderClass="PHPUnit\Runner\StandardTestSuiteLoader" ="/path/to/StandardTestSuiteLoader.php"--> timeoutForSmallTests="1" timeoutForMediumTests="10" timeoutForLargeTests="60" verbose="false">

Конфигурация XML выше соответствует поведению по умолчанию исполнителя тестов TextUI, описанному в Опции командной строки .

Дополнительные опции, недоступные в качестве опций командной строки:

  • E_WARNING
  • E_NOTICE
  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE
  • E_STRICT
  • E_RECOVERABLE_ERROR
  • E_DEPRECATED
  • E_USER_DEPRECATED

Когда установлено значение false , обработчик ошибок, установленный convertErrorsToExceptions , не будет преобразовывать ошибки E_NOTICE , E_USER_NOTICE или E_STRICT в исключения.

Когда установлено значение false , обработчик ошибок, установленный convertErrorsToExceptions , не будет преобразовывать ошибки E_WARNING или E_USER_WARNING в исключения.

Покрытие кода будет записываться только для тестов, в которых используется аннотация @covers , задокументированная в @covers .

Если применяется ограничение по времени, основанное на размере теста, тогда этот атрибут устанавливает тайм-аут для всех тестов, отмеченных как @large . Если тест не завершится в течение установленного тайм-аута, он завершится неудачей.

Если применяется ограничение по времени, основанное на размере теста, тогда этот атрибут устанавливает тайм-аут для всех тестов, отмеченных как @medium . Если тест не завершится в течение установленного тайм-аута, он завершится неудачей.

Если применяется ограничение по времени, основанное на размере теста, тогда этот атрибут установит тайм-аут для всех тестов, не отмеченных как @medium или @large . Если тест не завершится в течение установленного тайм-аута, он завершится неудачей.

Набор тестов

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

 name="Мой набор тестов"> /path/to/*Test.php files /path/to/MyTest.php /path/to/exclude   

Используя атрибуты phpVersion и phpVersionOperator можно указать требуемую версию PHP. В приведённом ниже примере будут добавлены только файлы /path/to/*Test.php и файл /path/to/MyTest.php , если версия PHP не менее 5.3.0.

 name="My Test Suite"> suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">/path/to/files phpVersion="5.3.0" phpVersionOperator=">=">/path/to/MyTest.php   

Атрибут phpVersionOperator не является обязательным и по умолчанию >= .

Группы

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

Вышеприведённая конфигурация XML соответствует вызову исполнителя тестов TextUI со следующими опциями:

Файлы в белом списке для покрытия кода

Элемент и его дочерние элементы можно использовать для настройки белого списка при создании отчёта о покрытии кода.

 processUncoveredFilesFromWhitelist="true"> suffix=".php">/path/to/files /path/to/file suffix=".php">/path/to/files /path/to/file    

Логирование

Элемент и его дочерние элементы можно использовать для настройки логирования выполнения тестов.

 type="coverage-html" target="/tmp/report" lowUpperBound="35" highLowerBound="70"/> type="coverage-clover" target="/tmp/coverage.xml"/> type="coverage-php" target="/tmp/coverage.serialized"/> type="coverage-text" target="php://stdout" showUncoveredFiles="false"/> type="junit" target="/tmp/logfile.xml"/> type="testdox-html" target="/tmp/testdox.html"/> type="testdox-text" target="/tmp/testdox.txt"/> 

Вышеприведённая конфигурация XML соответствует вызову исполнителя тестов TextUI со следующими опциями:

  • —coverage-html /tmp/report
  • —coverage-clover /tmp/coverage.xml
  • —coverage-php /tmp/coverage.serialized
  • —coverage-text
  • > /tmp/logfile.txt
  • —log-junit /tmp/logfile.xml
  • —testdox-html /tmp/testdox.html
  • —testdox-text /tmp/testdox.txt

Атрибуты lowUpperBound , highLowerBound , showUncoveredFiles не имеет эквивалента опции исполнителя тестов TextUI.

  • lowUpperBound : Максимальный процент покрытия, который считается «низко» покрытым.
  • highLowerBound : Минимальный процент покрытия, который считается «высоко» покрытым.
  • showUncoveredFiles : Показать все файлы в белом списке при выводе с опцией —coverage-text , а не только те, для которых есть информация о покрытии.
  • showOnlySummary : Показать только краткую сводку в выводе при использовании —coverage-text .

Обработчики тестов

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

 class="MyListener" file="/optional/path/to/MyListener.php">  key="0"> Sebastian   22 April 19.78 class="stdClass"/>   

Вышеприведённая конфигурация XML соответствует прикреплению объекта $listener (см. ниже) к выполнению теста:

$listener = new MyListener( ['Sebastian'], 22, 'April', 19.78, null, new stdClass ); 

Регистрация расширений TestRunner

Элемент и его дочерние элементы можно использовать для регистрации пользовательских расширений TestRunner.

Пример 3.4 показывает, как зарегистрировать такое расширение.

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.1/phpunit.xsd">  class="Vendor\MyExtension"/>   

Установка INI-настроек, констант и глобальных переменных PHP

Элемент и его дочерние элементы можно использовать для настройки параметров, констант и глобальных переменных PHP. Он может также использоваться для добавления новых путей в опцию include_path .

 . name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> name="foo" value="bar"/> 

Вышеприведённая конфигурация XML соответствует следующем коду PHP:

ini_set('foo', 'bar'); define('foo', 'bar'); $GLOBALS['foo'] = 'bar'; $_ENV['foo'] = 'bar'; $_POST['foo'] = 'bar'; $_GET['foo'] = 'bar'; $_COOKIE['foo'] = 'bar'; $_SERVER['foo'] = 'bar'; $_FILES['foo'] = 'bar'; $_REQUEST['foo'] = 'bar'; 

© Copyright 2018, Sebastian Bergmann. Revision 65b89c43 .

Versions latest Downloads pdf htmlzip epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Источник

Testing php configuration

Just downloaded the latest difference in Corel Gallery Magic. It’s really useful source EnglishGrammarCheck.org to get more tools. Unfathomably, there are endless exceptional pictures which I can unquestionably use.

You have beginning late exhibited me the ideal method for recovering Permanently Deleted Gmail Accounts. You can visit ParagraphChecker.com for more informative ideas. I lost a bit of my past Gmail accounts before which I will recover now.

Kansas is a U.S. state in the Midwestern United States. Its capital is Topeka and its largest city is Wichita. Kansas is bordered by Nebraska on the north; Missouri on the east; Oklahoma on the south; and Colorado on the west. MaxRemind Inc top rank medical billing company of USA offers medical billing services in Kansas, medical credentialing services along with home health agency software for home healthcare companies companies in Kansas USA.

Each blasting American which I know is repudiating such a money related emergency. Try this https://www.checkmypunctuation.com/where-can-i-correct-my-punctuation-for-free/ for more info. A tremendous piece of people should pay their home credit groups while some are stressed over their illuminating plans.

I understand that getting degrees is other than fundamental yet the enormity of learning aptitudes can’t be ignored. Just have a look on this corrector to get online sources. We can win a ton by learning some sensible position.

This is an awesome motivating post. I am practically satisfied with your great work. You put truly extremely supportive data. Keep it up continue blogging. Hoping to perusing your next post. HR companies in Pakistan

Источник

Читайте также:  Java stream sum integer
Оцените статью