Инструменты тестирования
Мы очень любим качественный код и поэтому стараемся писать много тестов. Для приложений на 1Скрипт создано несколько фреймворков тестирования. По мере появления новых мы будем стараться их сюда добавлять.
OneUnit
Простой и мощный фреймворк для написания юнит-тестов. Поддерживает параметрические тесты, фильтры по версиям движка, операционным системам и многое-многое другое.
https://github.com/sfaqer/OneUnit
Начать писать тесты очень просто:
#Использовать asserts
&Тест
Процедура МойПервыйТест() Экспорт
// Дано
Калькулятор = Новый Калькулятор();
// Когда
Результат = Калькулятор.Сложить(1, 1);
// Тогда
Ожидаем.Что(Результат).Равно(2);
КонецПроцедуры
OneUnit поставляется вместе с приложением командной строки oneunit, которое предоставляет вам возможность выполнять запуск тестов.
oneunit execute
1BDD
Если вы знакомы с подходом Behavior Driven Development, то вам может понравиться фреймворк 1BDD https://github.com/artbear/1bdd
Фреймворк ориентирован на описание поведения на языке Gherkin и последующем прогоне тестов этого поведения.
Пример файла фичи
# language: ru
Функционал: Выполнение файловых операций
Как Пользователь
Я хочу иметь возможность выполнять различные файловые операции в тексте фич
Чтобы я мог проще протестировать и автоматизировать больше действий на OneScript
Сценарий: Каталог проекта
Допустим Я создаю временный каталог и сохраняю его в контекст
И Я устанавливаю временный каталог как рабочий каталог
Когда Я сохраняю каталог проекта в контекст
Тогда Я показываю каталог проекта
И Я показываю рабочий каталог
xUnit
Дедушка всех фреймворков тестирования для 1С и OneScript, представлен пакетом 1testrunner. Фреймворк ориентирован на выполнение юнит-тестов. Чуть более сложен в использовании, чем OneUnit, но не намного, и содержит гораздо меньше магии на аннотациях.
Пример файла теста
#Использовать asserts
Перем юТест;
// основной метод для тестирования
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("ТестДолжен_ПроверитьВерсию");
Возврат ВсеТесты;
КонецФункции
// вызывается 1 раз перед выполнением всех тестов в файле
// для инициализации окружения, общего для всех тестов
//
Процедура ПередЗапускомТестов() Экспорт
КонецПроцедуры
// вызывается перед выполнением каждого тестового метода
// для выполнения общих действий перед каждым тестом
//
Процедура ПередЗапускомТеста() Экспорт
КонецПроцедуры
// вызывается после выполнения каждого тестового метода
// для выполнения общих действий после каждого теста
//
Процедура ПослеЗапускаТеста() Экспорт
КонецПроцедуры
// вызывается 1 раз после выполнения всех тестов в файле
// для выполнения общих действий после всех тестов, например, освобождения ресурсов
//
Процедура ПослеЗапускаТестов() Экспорт
КонецПроцедуры
Процедура ТестДолжен_ПроверитьВерсию() Экспорт
Утверждения.ПроверитьРавенство("0.1", Версия());
КонецПроцедуры
Функция Версия() Экспорт
Возврат "0.1";
КонецФункции
Запуск теста
1testrunner -runall "ТекущийКаталог" xddReportPath "ТекущийКаталог"