Skip to content

Инструменты тестирования

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

OneUnit

Простой и мощный фреймворк для написания юнит-тестов. Поддерживает параметрические тесты, фильтры по версиям движка, операционным системам и многое-многое другое.

https://github.com/sfaqer/OneUnit

Начать писать тесты очень просто:

bsl
#Использовать asserts

&Тест
Процедура МойПервыйТест() Экспорт

    // Дано
    Калькулятор = Новый Калькулятор();

    // Когда
    Результат = Калькулятор.Сложить(1, 1);

    // Тогда
    Ожидаем.Что(Результат).Равно(2);

КонецПроцедуры

OneUnit поставляется вместе с приложением командной строки oneunit, которое предоставляет вам возможность выполнять запуск тестов.

cmd
oneunit execute

1BDD

Если вы знакомы с подходом Behavior Driven Development, то вам может понравиться фреймворк 1BDD https://github.com/artbear/1bdd

Фреймворк ориентирован на описание поведения на языке Gherkin и последующем прогоне тестов этого поведения.

Пример файла фичи

gherkin
# language: ru

Функционал: Выполнение файловых операций
    Как Пользователь
    Я хочу иметь возможность выполнять различные файловые операции в тексте фич
    Чтобы я мог проще протестировать и автоматизировать больше действий на OneScript

Сценарий: Каталог проекта
    Допустим Я создаю временный каталог и сохраняю его в контекст
    И Я устанавливаю временный каталог как рабочий каталог
    Когда Я сохраняю каталог проекта в контекст
    Тогда Я показываю каталог проекта
    И Я показываю рабочий каталог

xUnit

Дедушка всех фреймворков тестирования для 1С и OneScript, представлен пакетом 1testrunner. Фреймворк ориентирован на выполнение юнит-тестов. Чуть более сложен в использовании, чем OneUnit, но не намного, и содержит гораздо меньше магии на аннотациях.

Пример файла теста

bsl
#Использовать asserts

Перем юТест;

// основной метод для тестирования
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт

    юТест = ЮнитТестирование;

    ВсеТесты = Новый Массив;
    ВсеТесты.Добавить("ТестДолжен_ПроверитьВерсию");

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

// вызывается 1 раз перед выполнением всех тестов в файле
// для инициализации окружения, общего для всех тестов
//
Процедура ПередЗапускомТестов() Экспорт

КонецПроцедуры

// вызывается перед выполнением каждого тестового метода
// для выполнения общих действий перед каждым тестом
//
Процедура ПередЗапускомТеста() Экспорт

КонецПроцедуры

// вызывается после выполнения каждого тестового метода
// для выполнения общих действий после каждого теста
//
Процедура ПослеЗапускаТеста() Экспорт

КонецПроцедуры

// вызывается 1 раз после выполнения всех тестов в файле
// для выполнения общих действий после всех тестов, например, освобождения ресурсов
//
Процедура ПослеЗапускаТестов() Экспорт

КонецПроцедуры

Процедура ТестДолжен_ПроверитьВерсию() Экспорт
    Утверждения.ПроверитьРавенство("0.1", Версия());
КонецПроцедуры

Функция Версия() Экспорт
    Возврат "0.1";
КонецФункции

Запуск теста

cmd
1testrunner -runall "ТекущийКаталог" xddReportPath "ТекущийКаталог"