SkillAgentSearch skills...

OneUnit

Фреймворк для тестирования приложений и библиотек OneScript

Install / Use

/learn @sfaqer/OneUnit
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

OneUnit

Фреймворк для тестирования приложений и библиотек OneScript

1. Написание тестов

Следующий пример даёт представление о минимально необходимом наборе компонентов для написания тестов. В следующих разделах будет представлена дополнительная информация о возможностях фреймворка.

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

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

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

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

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

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

1.1 Аннотации

OneUnit поддерживает следующие аннотации для настройки тестов и расширения возможностей фреймворка.

|Аннотация|Описание| |---|---| | &ТестовыйНабор | Обозначает, что сценарий является тестовым набором, используется для настройки жизненного цикла тестового набора | | &Тест | Обозначает, что метод является простым тестом. Эта аннотация не объявляет никаких параметров, тест исполняется как есть | | &ПараметризованныйТест | Обозначает, что метод является параметризованным тестом | | &ПовторяемыйТест | Обозначает, что метод является повторяемым тестом | | &ОтображаемоеИмя | Объявляет пользовательское отображаемое имя для тестового метода | | &Порядок | Используется для настройки порядка выполнения тестовых наборов и методов | | &ПередКаждым | Обозначает, что аннотированный метод должен быть выполнен перед каждым &Тест, &ПараметризованныйТест или &ПовторяемыйТест методом в текущем наборе | | &ПослеКаждого | Обозначает, что аннотированный метод должен быть выполнен после каждого &Тест, &ПараметризованныйТест или &ПовторяемыйТест методом в текущем наборе | | &ПередВсеми | Обозначает, что аннотированный метод должен быть выполнен до всех &Тест, &ПараметризованныйТест или &ПовторяемыйТест методом в текущем наборе | | &ПослеВсех | Обозначает, что аннотированный метод должен быть выполнен после всех &Тест, &ПараметризованныйТест или &ПовторяемыйТест методом в текущем наборе | | &Тег | Используется для объявления тегов для фильтрации тестов на уровне набора или метода | | &Выключен | Используется для отключения тестового набора или тестового метода | | &Таймаут | Используется для провала &Тест, &ПараметризованныйТест или &ПовторяемыйТест метода, если его выполнение превышает заданную продолжительность. |

1.2 Тестовые методы и наборы

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

Видимость методов.
Тестовые методы и методы жизненного цикла должны быть объявлены как Экспорт

Следующий тестовый набор демонстрирует использование &Тест методов и всех поддерживаемых методов жизненного цикла.

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

&ПередВсеми
Процедура ИнициализироватьВсе() Экспорт
КонецПроцедуры

&ПередКаждым
Процедура Инициализировать() Экспорт
КонецПроцедуры

&Тест
Процедура УспешныйТест() Экспорт
КонецПроцедуры

&Тест
Процедура ПадающийТест() Экспорт
    Ожидаем.Что(Ложь, "Падающий тест").ЭтоИстина();
КонецПроцедуры

&Тест
&Выключен("Для демонстрации")
Процедура ПропущенныйТест() Экспорт
    // Не будет выполнен
КонецПроцедуры

&ПослеКаждого
Процедура Завершение() Экспорт
КонецПроцедуры

&ПослеВсех
Процедура ЗавершениеВсех() Экспорт
КонецПроцедуры

Каждый сценарий с тестами по умолчанию представляет собой тестовый набор. Если по каким-либо причинам потребовалось определить конструктор ПриСозданииОбъекта, его необходимо дополнить соответствующей аннотацией &ТестовыйНабор. В противном случае сценарий не будет зарегистрирован как тестовый набор, и как следствие не будут обнаружены и тестовые методы данного сценария.

&ТестовыйНабор
Процедура ПриСозданииОбъекта() Экспорт
КонецПроцедуры

1.3 Отображаемые имена

Тестовые методы могут объявлять пользовательские отображаемые имена через &ОтображаемоеИмя, где можно использовать пробелы, специальные символы и даже эмодзи, которые будут отображаться в отчётах о тестировании и логе выполнения.

&Тест
&ОтображаемоеИмя("Произвольное имя теста содержащее пробелы")
Процедура ТестСОтображаемымИменемСодержащимПробелы() Экспорт
КонецПроцедуры

&Тест
&ОтображаемоеИмя("╯°□°)╯")
Процедура ТестСОтображаемымИменемСодержащимСпециальныеСимволы() Экспорт
КонецПроцедуры

&Тест
&ОтображаемоеИмя("😱")
Процедура ТестСОтображаемымИменемСодержащимЭмодзи() Экспорт
КонецПроцедуры

1.4 Неперехваченные исключения

В OneUnit если исключение выдаётся из тестового метода или метода жизненного цикла и не перехватывается в этом тестовом методе или методе жизненного цикла, то фреймворк пометит тест как Сломанный.

В следующем примере ПадениеПриНеперехваченномИсключении() методы вызывает исключение Деление на ноль. Поскольку исключение не перехватывается, тест будет помечен как Сломанный.

&Тест
Процедура ПадениеПриНеперехваченномИсключении() Экспорт

    // Следующий код выбрасывает исключение деления на ноль, которое вызовет падение теста
    Калькулятор = Новый Калькулятор();
    Калькулятор.Разделить(1, 0);

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

При использовании библиотеки asserts, в случае если не проходит проверка утверждения, то фреймворк пометит тест как Ошибочный.

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

&Тест
Процедура ПадениеПриУтверждении() Экспорт

    Утверждения.ПроверитьИстину(Ложь, "Исключение, которое помечает тест ошибочным");

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

1.5 Отключение тестов

Целые тестовые наборы или отдельные тестовые методы можно отключить с помощью аннотации &Выключен, или с помощью одной из аннотаций, перечисленных в разделе Условное выполнение тестов.
При применении аннотации &Выключен на уровне набора, все методы тестирования и методы жизненного цикла в этом наборе также будут отключены.
Отключение через аннотацию &Выключен предотвращает вызов методов жизненного цикла на уровне метода, таких как &ПередКаждым, &ПослеКаждого. Однако это не предотвращает создание экземпляра тестового набора и не предотвращает выполнение методов жизненного цикла на уровне набора, таких как &ПередВсеми, &ПослеВсех.

Вот &Выключен тестовый набор

&Тест
Процедура ТестБудетПропущен() Экспорт
КонецПроцедуры

&Выключен("Выключен до устранения ошибки #42")
&ТестовыйНабор
Процедура ПриСозданииОбъекта()
КонецПроцедуры

А вот тестовый набор, в котором тестовый метод отключен с помощью аннотации &Выключен

&Выключен("Выключен до устранения ошибки #42")
&Тест
Процедура ТестБудетПропущен() Экспорт
КонецПроцедуры

&Тест
Процедура ТестБудетВыполнен() Экспорт
КонецПроцедуры

1.6 Условное выполнение тестов

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

Если зарегистрировано несколько условий, тест будет отключен, если хотя бы одно из условий истинно. Если тестовый набор отключен, все тестовые методы и методы жизненного цикла в этом наборе также будут отключены. Если тестовый метод отключен, то вызовы методов жизненного цикла на уровне метода, таких как &ПередКаждым, &ПослеКаждого, будут пропущены. Однако это не предотвращает создание экземпляра тестового набора и не предотвращает выполнение методов жизненного цикла на уровне набора, таких как &ПередВсеми, &ПослеВсех.

1.6.1 Условия на операционную систему

Набор или тест можно включить или отключить в определённой операционной системе с помощью аннотаций: &ВключенНаОС, &ВыключенНаОС.

Операционная система задаётся строкой, которая соответствует одной из следующих констант: Windows, Linux, MacOS

&Тест
&ВыключенНаОС("Windows")
Процедура ВыключенНаОСWindows() Экспорт
КонецПроцедуры

&Тест
&ВыключенНаОС("Linux")
Процедура ВыключенНаОСLinux() Экспорт
КонецПроцедуры

&Тест
&ВыключенНаОС("MacOS")
Процедура ВыключенНаОСMacOS() Экспорт
КонецПроцедуры

&Тест
&ВключенНаОС("Windows")
Процедура ВключенНаОСWindows() Экспорт
КонецПроцедуры

&Тест
&ВключенНаОС("Linux")
Процедура ВключенНаОСLinux() Экспорт
КонецПроцедуры

&Тест
&ВключенНаОС("MacOS")
Процедура ВключенНаОСMacOS() Экспорт
КонецПроцедуры

1.6.2 Условия на версию OneScript

Набор или тест можно включить или отключить в определённой версии OneScript с помощью аннотаций: &ВключенДляOneScript, &ВыключенДляOneScript.
Версия OneScript задаётся строкой, которая соответствует шаблону по правилам библиотеки semver.

&Тест
&ВыключенДляOneScript("<2")
Процедура ВыключенДляOneScriptМладшеДвойки() Экспорт
КонецПроцедуры

&Тест
&ВыключенДляOneScript("~2.0")
Процедура ВыключенДляOneScriptСтаршеДвойки() Экспорт
КонецПроцедуры

&Тест
&ВключенДляOneScript("<2")
Процедура ВключенДляOneScriptМладшеДвойки() Экспорт
Коне

Related Skills

View on GitHub
GitHub Stars48
CategoryDevelopment
Updated29d ago
Forks5

Languages

1C Enterprise

Security Score

90/100

Audited on Mar 3, 2026

No findings