-
Notifications
You must be signed in to change notification settings - Fork 126
Создание файлов тестов (для версии 3.Х)
Создаем новую внешнюю обработку, т.н. тестовый набор
В модуле этой обработки размещаются тестовые случаи (экспортные методы без параметров, чье имя начинается на Тест)
Тестовый случай считается успешно выполненным, если в процессе его выполнения не было исключения.
Соответственно, для того, чтобы тест упал, нужно выбросить исключение 1С. Для этого используются вызовы специальных методов-утверждений из фреймворка xUnitFor1C
. См. Методы проверки/утверждений
-
Переменная
ЮТест
- содержит в себе ссылку на экземпляр фреймворка
xUnitFor1C
- объект обработкиxddTestRunner
- с помощью этой переменной можно использовать предопределенные методы
xUnitFor1C
. Например, см. Методы проверки/утверждений - имя
ЮТест
необязательно, можно использовать любое другое имя переменной - значение этой переменной должно быть заполнено в методе
ПолучитьСписокТестов
- содержит в себе ссылку на экземпляр фреймворка
-
функция
ПолучитьСписокТестов
- должна вернуть массив описаний тестовых случаев
- должна заполнить значение переменной
ЮТест
- именно этот массив и является списком выполняемых тестов
- один входной параметр - ссылка на экземпляр фреймворка
xUnitFor1C
- объект обработки xddTestRunner
-
процедура
ПередЗапускомТеста
(необязательная)- вызывается перед запуском каждого теста
-
процедура
ПослеЗапускаТеста
(необязательная)- вызывается после запуска каждого теста
- метод вызывается независимо от того, успешно прошел тест или упал.
-
процедура
ПередЗапускомНабораТестов
(необязательная)- вызывается перед запуском первого теста из набора тестов обработки с тестами
-
процедура
ПослеЗапускаНабораТестов
(необязательная)- вызывается после запуска последнего теста из набора тестов обработки с тестами
- метод вызывается независимо от того, успешно прошли тесты или упали.
- функция
РазрешенСлучайныйПорядокВыполненияТестов
(необязательная)- вызывается один раз при создании объекта тестирования.
- позволяет строго задать последовательность выполнения тестов. Это удобно для пошаговых сценариев, BDD и т.п.
- должна вернуть Ложь или Истину как результат работы.
- Если у теста нет реализации этого метода, считается, что тестовые сценарии теста можно выполнять в случайном порядке.
Для гарантирования независимости тестов (это одно из основных требований к тестам) рекомендуется использовать механизм транзакций.
Перед запуском теста начинаем транзакцию, после выполнения теста транзакция отменяется. В итоге в базе не остается никаких следов тестирования и тесты работают независимо.
Можно использовать следующий шаблон методов теста
Процедура ПередЗапускомТеста() Экспорт
НачатьТранзакцию();
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
КонецПроцедуры
Перем ЮТест; // ссылка на экземпляр фреймворка xUnitFor1C - объект обработки xddTestRunner
//{ основная процедура для юнит-тестирования xUnitFor1C
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
ЮТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("ТестДолжен_СложитьДваИДва");
Возврат ВсеТесты;
КонецФункции
//}
//{ Блок юнит-тестов
Процедура ПередЗапускомТеста() Экспорт
НачатьТранзакцию();
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
КонецПроцедуры
Процедура ТестДолжен_СложитьДваИДва() Экспорт
ЮТест.ПроверитьРавенство(2 + 2, 4, "2 + 2, 4");
КонецПроцедуры
//}