Класс Модульного Тестирования 

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

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

Использование класса модульного тестирования 

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

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

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

  • is_object
  • is_string
  • is_bool
  • is_true
  • is_false
  • is_int
  • is_numeric
  • is_float
  • is_double
  • is_array
  • is_null
  • is_resource

Создание отчетов 

Вы можете либо отображать результаты после каждого теста либо же вы можете запустить несколько тестов и создать отчет в конце. Чтобы показать отчет, достаточно воспользоваться echo или return запущеной функции:

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 'Это оценивается как true';

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

if (1 === TRUE) echo 'Это оценивается как FALSE';

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

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

Включение/отключение тестирования 

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

$this->unit->active(FALSE);

Вывод теста 

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

  • Имя теста (test_name)
  • Тип данных теста (test_datatype)
  • Ожидаемый тип данных (res_datatype)
  • Результат (result)
  • Имя файла (file)
  • Номер строки (line)
  • Любые заметки, которые вы ввели для теста (notes)

Вы можете настроить какие из этих полей будут отображены с помощью $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);

Примечание

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

Справка класса 

class CI_Unit_test 
set_test_items($items) 
Параметры:
  • $items (массив) – Список видимых элементов теста
Возвращает:

пустота

Задает список элементов, которые должны быть видны в тестах. Допустимые значения::

  • test_name
  • test_datatype
  • res_datatype
  • result
  • file
  • line
  • notes
run($test[, $expected = TRUE[, $test_name = 'undefined'[, $notes = '']]]) 
Параметры:
  • $test (смешанный) – Тестируемые данные
  • $expected (смешанный) – Ожидаемый результат
  • $test_name (строка) – Имя теста
  • $notes (строка) – Любые заметки, которые прилагаются к тесту
Возвращает:

Отчет теста

Возвращаемый тип:

строка

Запускает тест.

report([$result = array()]) 
Параметры:
  • $result (массив) – Массив, содержащий результаты тестов
Возвращает:

Отчет теста

Возвращаемый тип:

строка

Формирует отчет выполненных тестов.

use_strict([$state = TRUE]) 
Параметры:
  • $state (булево) – Метка строгого режима
Возвращаемый тип:

пустота

Включает/отключает строгое сравнение в тестах.

active([$state = TRUE]) 
Параметры:
  • $state (булево) – Следует ли включать тестирование
Возвращаемый тип:

пустота

Включает/выключает тестирования.

result([$results = array()]) 
Параметры:
  • $results (массив) – Список результатов тестов
Возвращает:

Массив исходных данных результата теста

Возвращаемый тип:

массив

Возвращает необработанные результаты данных теста.

set_template($template) 
Параметры:
  • $template (строка) – Шаблон вывода результата теста
Возвращаемый тип:

пустота

Задает шаблон для отображения результатов тестов.