Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

CodeIgniter User Guide Version 2.1.0


Класс модульного тестирования (Unit Testing)

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

Класс модульного тестирования CodeIgniter-а достаточно прост, он состоит из функции оценки и двух функций результата. Он не представляет собой полномасштабный тестовый набор, но является простым механизмом для определения правильности результатов.

Инициализация класса

Как и большинство других классов в CodeIgniter, класс модульного тестирования инициализируется в вашем контроллере посредством функции $this->load->library:

$this->load->library('unit_test');

Загруженный объект класса доступен как $this->unit

Запуск тестов

Запуск теста заключается в постановке теста и исследования результата следующей функции:

$this->unit->run( test, expected result, 'test name', 'notes');

Где test это результат кода, который вы хотите протестировать, expected result это данные, которые вы ожидаете, test name это опциональное имя, которое вы даете тесту и notes это опциональные примечания. Пример:

$test = 1 + 1;

$expected_result = 2;

$test_name = 'Adds one plus one';

$this->unit->run($test, $expected_result, $test_name);

Ожидаемый результат, который вы передаете, может быть литеральным соответствием, или соответствием типа данных. Вот пример литерала:

$this->unit->run('Foo', 'Foo');

Вот пример совпадения типов:

$this->unit->run('Foo', 'is_string');

Обратили внимание на использование "is_string" во втором параметре? Это указывает функции на то, что тип вашего результата должен быть строкой. Вот список доступных типов:

Генерация отчетов

Вы также можете отображать отчеты после каждого теста, или вы можете запустить несколько тестов и сгенерировать отчет в конце. Чтобы показать отчет, просто выведите в браузер ответ функции run():

echo $this->unit->run($test, $expected_result);

Чтобы запустить полный отчет по всем тестам, сделайте так:

echo $this->unit->report();

Отчет будет форматирован в HTML-таблицу. Если вы предпочитаете использовать строчные данные, вы можете получить массив, используя:

echo $this->unit->result();

Строгий режим

По умолчанию класс модульного тестирования исследует литеральные соответствия неточно. Рассмотрим этот пример:

$this->unit->run(1, TRUE);

Тест сравнивает с целым, но ожидаемый результат булев. PHP, однако при неточном сравнении типов вычислит этот код как TRUE, используя обычное сравнение:

if (1 == TRUE) echo 'This evaluates as true';

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

if (1 === TRUE) echo 'This evaluates as FALSE';

Чтобы включить строгий режим, используйте код:

$this->unit->use_strict(TRUE);

Включение и выключение модульного тестирования

Если вы хотите оставить некоторые тесты в ваших скриптах, но не запускать их без необходимости, вы можете выключить модульное тестирование, используя:

$this->unit->active(FALSE)

Отображение модульных тестов

Когда ваш модульный тест отображает результаты, следующие элементы доступны по умолчанию:

Настройка отображения тестов

Вы можете указать, какие их этих элементов будут отображены, используя $this->unit->set_test_items(). Например, если вам нужны только имя теста и результат:

$this->unit->set_test_items(array('test_name', 'result'));

Создание шаблона

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

$str = '
<table border="0" cellpadding="4" cellspacing="1">
    {rows}
        <tr>
        <td>{item}</td>
        <td>{result}</td>
        </tr>
    {/rows}
</table>';

$this->unit->set_template($str);

Примечание: Ваш шаблон должен быть декларирован до запуска процесса тестирования.

Поделиться


Переведено в компании Аринт.

Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter

Яндекс.Метрика