Skip to content

Создание файлов тестов (для версии 3.Х)

Artur Ayukhanov edited this page Feb 2, 2016 · 3 revisions

Создание файлов-тестов

Создаем новую внешнюю обработку, т.н. тестовый набор

В модуле этой обработки размещаются тестовые случаи (экспортные методы без параметров, чье имя начинается на Тест)

Тестовый случай считается успешно выполненным, если в процессе его выполнения не было исключения.

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

Примеры тестов:

Предопределенные методы теста

  • Переменная ЮТест

    • содержит в себе ссылку на экземпляр фреймворка xUnitFor1C - объект обработки xddTestRunner
    • с помощью этой переменной можно использовать предопределенные методы xUnitFor1C. Например, см. Методы проверки/утверждений
    • имя ЮТест необязательно, можно использовать любое другое имя переменной
    • значение этой переменной должно быть заполнено в методе ПолучитьСписокТестов
  • функция ПолучитьСписокТестов

    • должна вернуть массив описаний тестовых случаев
    • должна заполнить значение переменной ЮТест
    • именно этот массив и является списком выполняемых тестов
    • один входной параметр - ссылка на экземпляр фреймворка xUnitFor1C - объект обработки xddTestRunner
  • процедура ПередЗапускомТеста (необязательная)

    • вызывается перед запуском каждого теста
  • процедура ПослеЗапускаТеста (необязательная)

    • вызывается после запуска каждого теста
    • метод вызывается независимо от того, успешно прошел тест или упал.
  • процедура ПередЗапускомНабораТестов (необязательная)

    • вызывается перед запуском первого теста из набора тестов обработки с тестами
  • процедура ПослеЗапускаНабораТестов (необязательная)

    • вызывается после запуска последнего теста из набора тестов обработки с тестами
    • метод вызывается независимо от того, успешно прошли тесты или упали.
  • функция РазрешенСлучайныйПорядокВыполненияТестов (необязательная)
    • вызывается один раз при создании объекта тестирования.
    • позволяет строго задать последовательность выполнения тестов. Это удобно для пошаговых сценариев, BDD и т.п.
    • должна вернуть Ложь или Истину как результат работы.
    • Если у теста нет реализации этого метода, считается, что тестовые сценарии теста можно выполнять в случайном порядке.

Базовые приемы написания тестов

Для гарантирования независимости тестов (это одно из основных требований к тестам) рекомендуется использовать механизм транзакций.

Перед запуском теста начинаем транзакцию, после выполнения теста транзакция отменяется. В итоге в базе не остается никаких следов тестирования и тесты работают независимо.

Можно использовать следующий шаблон методов теста

Процедура ПередЗапускомТеста() Экспорт
	НачатьТранзакцию();
КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт
	Если ТранзакцияАктивна() Тогда
	    ОтменитьТранзакцию();
	КонецЕсли;
КонецПроцедуры

Базовый шаблон файла-теста (серверный тест в модуле обработки)

Перем ЮТест; // ссылка на экземпляр фреймворка xUnitFor1C - объект обработки xddTestRunner

//{ основная процедура для юнит-тестирования xUnitFor1C
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
	
	ЮТест = ЮнитТестирование;
	
	ВсеТесты = Новый Массив;
	
	ВсеТесты.Добавить("ТестДолжен_СложитьДваИДва");


	Возврат ВсеТесты;
	
КонецФункции
//}

//{ Блок юнит-тестов

Процедура ПередЗапускомТеста() Экспорт
	НачатьТранзакцию();
КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт
	Если ТранзакцияАктивна() Тогда
	    ОтменитьТранзакцию();
	КонецЕсли;
КонецПроцедуры

Процедура ТестДолжен_СложитьДваИДва() Экспорт
	ЮТест.ПроверитьРавенство(2 + 2, 4, "2 + 2, 4");
КонецПроцедуры

//}
Clone this wiki locally