function testIsEmpty( ) {
$this->stack4->push(1547); $this->stack4->pop(); $ret = $this->stack4->isEmpty(); $this->assert($ret==1)I
i
По завершении тестов родительский класс вызывает метод teardown(). Этот метод позволяет поместить в наш класс логику для служебных задач и «уборки»:
function tearOown(){
echo(" Finished running test .............................. <br>");
)
У
Наконец, надо создать сам комплект тестов. Назовем соответствующий сценарий TestStack.php.
Необходимо включить класс сценария, содержащий класс тестера: <?php
//Test_Stack.PHP require("Stack_Tester.php");
Создадим экземпляр класса TestSuite, входящего в библиотеку PhpUnit: $suite = new TestSuite();
Добавим в этот комплект объекты Stack_Tester, воспользовавшись методом addtest(). Объекты Stack_Tester строятся путем передачи имени метода, за тестирование которого они отвечают:
$suite->addtest(new Stack_Tester("testPush")); $suite->addtest(newStack_Tester("testPop") ); $suite->addtest(newStack_Tester("testPeek") ); $suite->addtest(new Stack_Tester("testIsEmpty"));
Следующий экземпляр класса создается для хранения результатов прогона теста:
StestRes = new TextTestResultO;
Прогон теста выполняется с помощью метода run() класса TestSuite. Класс TestSuite поочередно вызывает каждый из классов Stack_Tester, вызывая тот метод, который передается классам в виде аргумента. В результате выполняется прогон тестов. Методы assert() и assertEqual() проверяют правильность результатов.
$suite->run(&$testRes); Метод report() служит для отображения результатов тестирования:
$testRes->report();
?> '
Резюме
В этой главе мы рассмотрели различные типы ошибок, которые могут возникать при программировании:
♦ Синтаксические ошибки
♦ Семантические ошибки
♦ Логические ошибки
♦ Ошибки окружения
Мы также рассмотрели различные уровни ошибок в РНР:
♦ Ошибки синтаксического анализа
♦ Неисправимые ошибки
♦ Предупреждения и уведомления
♦ Ошибки ядра и компиляции
Существенно, что мы рассмотрели способы установки этих уровней ошибок. Мы также посмотрели, как обрабатывать эти ошибки с помощью:
♦ Регистрации в журналах
♦ Подавления сообщений об ошибках
♦ Восстановления работы после сбоев
Мы также узнали, как реализовывать пользовательскую проверку ошибок и мягко завершать работу сценариев.