Инструмент тестирования командной строки PHPUnit вызывается с помощью команды phpunit. Следующий код показывает, как запускать тесты с помощью инструмента тестирования командной строки PHPUnit.
PHPunitArrayTest
PHPUnit 2.3.0 от Себастьяна Бергманна
Время: 0,067288
OK (2 теста)
Для каждого теста инструмент тестирования командной строки PHPUnit печатает символ, обозначающий процесс:
· Успешный тест печатает ".".
·При запуске метода тестирования происходит ошибка утверждения и печатается буква «F».
·При запуске метода тестирования возникает ошибка и печатается буква «E».
·Тест не пройден или в тесте не выводится «I» (см. главу «Незавершенные тесты» в конце этой книги).
PHPUnit может различать сбои и ошибки. Сбой — это нарушение утверждения PHPUnit, а ошибка — неожиданное исключение или ошибка PHP. Иногда это различие полезно, потому что ошибки исправить легче, чем неудачи. Если у вас длинный список проблем, рекомендуется сначала устранить все ошибки, а затем посмотреть, остались ли какие-либо сбои.
Давайте рассмотрим некоторые параметры инструмента тестирования командной строки кода ниже:
phpunit --help
PHPUnit 2.3.0 от Себастьяна Бергманна.
Использование: phpunit [переключатели] UnitTest [UnitTest.php].
--coverage-data <файл> Записать данные о покрытии кода в необработанном формате в файл.
--coverage-html <file> Записать данные о покрытии кода в формате HTML в файл.
--coverage-text <файл> Записать данные о покрытии кода в текстовом формате в файл.
--testdox-html <file> Записывать гибкую документацию в формате HTML в файл.
--testdox-text <файл> Записывать гибкую документацию в текстовом формате в файл.
--log-xml <file> Записывать ход выполнения теста в файл в формате XML.
--loader <loader> Используемая реализация TestSuiteLoader.
--skeleton Создать скелет класса UnitTest для Unit в Unit.php.
--wait Ожидает нажатия клавиши после каждого теста.
--help Распечатывает информацию об использовании.
--version Распечатывает версию и завершает работу.
phpunit UnitTest
запускает тесты, предоставленные классом UnitTest, который должен быть определен в исходном файле UnitTest.php.
Класс UnitTest должен наследовать класс PHPUnit2_Framework_TestCase или предоставить набор общедоступных статических методов и вернуть класс объекта PHPUnit2_Framework_Test (например, экземпляр класса PHPUnit2_Framework_TestSuite).
phpunit UnitTest UnitTest.php
запускает тест, предоставленный классом UnitTest, который определяется командой В указанном исходном файле (UnitTest.php).
--coverage-data, --coverage-html и --coverage-text
управляют анализом и сбором информации о покрытии кода для запуска тестов (см. раздел «Анализ покрытия кода» в конце этой книги)
--testdox-html и --testdox-text
генерирует гибкую документацию для запуска тестов в формате HTML или простом текстовом формате (см. главу «Другие варианты использования тестирования» в конце этой книги).
--log-xml
генерирует файлы журналов в формате XML для запуска тестов.
В следующем примере показан файл журнала XML, созданный для тестов в ArrayTest.
<?xml версия="1.0" кодировка="UTF-8"?>
<тестовые наборы>
<testsuite name="ArrayTest"tests="2" error="0" error="0" time="0.020026">
<testcase name="testNewArrayIsEmpty" class="ArrayTest" time="0.014449"/>
<testcase name="testArrayContainsAnElement" class="ArrayTest" time="0.005577"/>
</тестовый набор>
</testsuites>
Следующий XML-файл журнала создается для двух тестов тестового класса с именем FailErrorTest: один — testFailure, а другой — testError. Это показывает, как сбои и ошибки представляются отдельно.
<?xml версия="1.0" кодировка="UTF-8"?>
<тестовые наборы>
<testsuite name="FailureErrorTest"tests="2" error="1" error="1" time="0.013603">
<testcase name="testFailure" class="FailureErrorTest" time="0.011872">
<сообщение об ошибке="" type="PHPUnit2_Framework_AssertionFailedError"></failure>
</тестовый пример>
<testcase name="testError" class="FailureErrorTest" time="0.001731">
<сообщение об ошибке="" type="Exception"></error>
</тестовый пример>
</тестовый набор>
</тестовые наборы>
--loader
указывает используемый загрузчик набора тестов.
Стандартный загрузчик набора тестов ищет исходные файлы в текущем рабочем каталоге и по пути, определенном директивой конфигурации PHP include_path. Согласно правилам именования PEAR, исходный файл, сопоставленный с именем класса в форме Project_Package_Class, — это Project/Package/Class.php.
--skeleton
генерирует скелет для класса тестового примера с именем UnitTest (в файле UnitTest.php) для класса Unit (в файле Unit.php). Для каждого метода исходного класса в сгенерированном классе тестовых примеров предоставляется незаконченный тестовый пример (см. раздел «Незавершенные тесты» в конце этой книги).
В следующем примере показано, как создать скелетный тестовый класс для класса с именем Sample.
phpunit -- образец скелета
PHPUnit 2.3.0 от Себастьяна Бергманна.
Написал скелет тестового класса для Sample
СэмплТест.php.
PHPUnit SampleTest
PHPUnit 2.3.0 от Себастьяна Бергманна.
я
Время: 0.007268
Был 1 неполный тестовый пример:
1) testSampleMethod(SampleTest)
Хорошо, но неполные тестовые примеры!!!
Тестов выполняется: 1, неполные тестовые примеры: 1.
Когда вы пишете тесты для существующего кода, вам приходится повторять множество одних и тех же фрагментов кода, например:
public function testSampleMethod( ) {}
PHPUnit может помочь вам проанализировать существующий код и сгенерировать A. Фреймворк для классов тестовых случаев.
--wait
В конце каждого теста дождитесь нажатия клавиши. Это особенно полезно, если вы запускаете тесты в окне, где постоянно выполняется только тест.
Совет: Если в тестируемом коде есть синтаксическая ошибка PHP, тест текстового интерфейса завершится напрямую, без вывода сообщения об ошибке. Стандартный загрузчик набора тестов проверяет исходные файлы набора тестов на наличие синтаксических ошибок PHP, однако он не проверяет исходные файлы, включенные в набор тестов, на наличие синтаксических ошибок. В будущих версиях PHPUnit эта проблема будет решена с использованием изолированных классов интерпретатора PHP.