CodeIgniter User Guide Version 2.0.0


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

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

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

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

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

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

Загруженный объект класса 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" во втором параметре? Это говорит функции, что результат тестирования должен производить строку на выходе. Вот список доступных типов данных:

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

Вы можете отображать отчет после каждого теста, или вы можете запускать несколько тестов и генерировать отчет по окончании. Для того, чтобы отобразить отчет, просто сделайте echo результата, возвращенного функцией 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_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);

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