Главная

Мои проекты

Spectrum

О фреймворке

Spectrum — это PHP фреймворк для автоматизации тестирования.

Spectrum требует для работы PHP 5.3 или выше.

Spectrum распространяется под свободной лицензией "New BSD License" (текст лицензии и авторские права).

Скачать исходные код можно с https://github.com/m-haritonov/spectrum.

Текущая версия — "альфа" и не является стабильной.

Тесты

Тесты предназначены для объявления кода, выполняющего проверку на соответствие ожидаемому результату и объявляются посредством вызова функции test.

require_once 'spectrum/init.php'; test('Выполняет полезное действие', function(){ be(111)->ident(111); }); \spectrum\run();

Группы

Группы предназначены для объединения тестов в группу. Группы объявляются посредством вызовы функции group и могут содержать как тесты так и группы.

require_once 'spectrum/init.php'; group('Группа 1', function(){ test('Выполняет полезное действие', function(){ be(111)->ident(111); }); group('Группа 1', function(){ test('Выполняет полезное действие', function(){ be(111)->ident(111); }); }); }); \spectrum\run();

Можно создавать группы без имени, использование которых может быть удобно при использовании контекстов.

require_once 'spectrum/init.php'; group(function(){ before(function(){ // Выполняем действия перед каждым тестом }); test('Выполняет полезное действие', function(){ be(111)->ident(111); }); test('Выполняет полезное действие', function(){ be(111)->ident(111); }); }); \spectrum\run();

Контексты

Контексты предназначены для вынесения одинаковых настроек нескольких тестов в одно место и для выполнения одного и того же кода тестов в разных окружениях (с разными значениями параметров). Для задания кода, выполняемого перед или после тестов используются функции before и after.

require_once 'spectrum/init.php'; before(function(){ // Выполняем действия перед каждым тестом }); after(function(){ // Выполняем действия после каждого теста }); test('Выполняет полезное действие', function(){ be(111)->ident(111); }); test('Выполняет полезное действие', function(){ be(111)->ident(111); }); \spectrum\run();

Внутри функций before, after и test доступна функция data, возвращающая объект, создаваемый перед каждым вызовом последовательности before/text/after, и в который можно сохранять различные данные.

require_once 'spectrum/init.php'; before(function(){ data()->someClass = new SomeClass(); }); test('Выполняет полезное действие', function(){ be(data()->someClass->someMethod1())->ident(111); }); test('Выполняет полезное действие', function(){ be(data()->someClass->someMethod2())->ident(111); }); \spectrum\run();

Для выполнения одного и того же теста или группы в разных окружениях используется вызов функций test и group с дополнительным параметром.

require_once 'spectrum/init.php'; // Контекст (второй параметр) в виде массива test('Выполняет полезное действие', array( array('value' => 111), array('value' => '1 1 1'), array('value' => '11 1'), array('value' => '1 11'), ), function(){ $someClass = new SomeClass(); be($someClass->someMethod1(data()->value))->ident(111); }); // Контекст (второй параметр) в виде функции test('Выполняет полезное действие', function(){ before(function(){ data()->someClass = new SomeClass(); }); group('111', function(){ before(function(){ data()->value = 111; }); }); group('1 1 1', function(){ before(function(){ data()->value = '1 1 1'; }); }); group('11 1', function(){ before(function(){ data()->value = '11 1'; }); }); group('1 11', function(){ before(function(){ data()->value = '1 11'; }); }); }, function(){ be(data()->someClass->someMethod1(data()->value))->ident(111); }); // Контекст (второй параметр) в виде массива у группы group('Группа 1', array( array('value' => 111), array('value' => '1 1 1'), array('value' => '11 1'), array('value' => '1 11'), ), function(){ before(function(){ data()->someClass = new SomeClass(); }); test('Выполняет полезное действие', function(){ be(data()->someClass->someMethod1(data()->value))->ident(111); }); test('Выполняет полезное действие', function(){ be(data()->someClass->someMethod2(data()->value))->ident(111); }); }); // И так далее \spectrum\run();

Утверждения и матчеры

В разработке.

Запуск

В разработке.

Результаты выполнения

В разработке.

Обработка ошибок

В разработке.

Конфигурация

В разработке.

Строители

В разработке.

Плагины

В разработке.

Замена внутренних функций и классов

В разработке.

E-mail для связи: mail@m-haritonov.net