Skip to content

Commit

Permalink
Merge branch 'release/23.05'
Browse files Browse the repository at this point in the history
  • Loading branch information
alkoleft committed May 25, 2023
2 parents 356c1e2 + e53160b commit 0f9332a
Show file tree
Hide file tree
Showing 74 changed files with 4,048 additions and 901 deletions.
40 changes: 40 additions & 0 deletions documentation/blog/2023/05/25-engine-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
title: YaxUnit. Версия 23.05
authors: alkoleft
tags: [releases, yaxunit]
---

[Release 23.05](https://github.com/bia-technologies/edt-test-runner/releases/tag/23.05)

## Новое в версии

### Тестовые данные

* Научили конструктор тестовых данных создавать данные в регистрах [#69](https://github.com/bia-technologies/yaxunit/pull/69)
* Реализовано удаление тестовых данных созданных на клиенте [#74](https://github.com/bia-technologies/yaxunit/pull/74)
* Добавлена возможность создания объекта без записи и формирование вариантов параметров [#86](https://github.com/bia-technologies/yaxunit/pull/86)
* Реализована поддержка параметров заполнения для функции "Фикция" в тестовых данных [#75](https://github.com/bia-technologies/yaxunit/pull/75)
* Сброс признака ОбменДанными.Загрузка после создании объекта через методы движка [#92](https://github.com/bia-technologies/yaxunit/pull/92)
* Поддержка генератором тестовых данных создания группы [#90](https://github.com/bia-technologies/yaxunit/pull/90)
* Возможность создавать несколько конструкторов тестовых данных [#55](https://github.com/bia-technologies/yaxunit/pull/55)
* В конструктор тестовых данных добавлен метод заполнения обязательных полей фиктивными данными [#93](https://github.com/bia-technologies/yaxunit/pull/93)

### Мокито

* Использование предикатов при указании параметров мокируемого метода [#98](https://github.com/bia-technologies/yaxunit/pull/98)
* Исправлена ошибка неправильного сравнение параметров при проверке вызовов Мокито [#76](https://github.com/bia-technologies/yaxunit/pull/76). Спасибо [@alexandr-yang](https://github.com/alexandr-yang)
* Исправлена ошибка подбора реакции Мокито [#62](https://github.com/bia-technologies/yaxunit/pull/62)

### Утверждения

* Утверждения для проверки таблиц информационной базы [#70](https://github.com/bia-technologies/yaxunit/pull/70)

### Запросы

* Расширение API для работы с запросами [#94](https://github.com/bia-technologies/yaxunit/pull/94)

### Прочее

* Добавлена картинка подсистемы 16*16 [#78](https://github.com/bia-technologies/yaxunit/pull/78). Спасибо [@petypen](https://github.com/petypen)
* Исправлены некоторые ошибки [#85](https://github.com/bia-technologies/yaxunit/pull/85). Спасибо [@potoyalo](https://github.com/potoyalo)
* Добавлена настройки выполнения на уровень модуля [#84](https://github.com/bia-technologies/yaxunit/pull/84)
2 changes: 1 addition & 1 deletion documentation/docs/first-test.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
sidebar_position: 2
tags: [Getting started]
tags: [Начало]
---

# Пишем первый тест
Expand Down
2 changes: 1 addition & 1 deletion documentation/docs/install/install.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
sidebar_position: 1
tags: [Getting started]
tags: [Начало]
---

# Установка
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,16 @@
---
tags: [Getting started, Asserts]
tags: [Начало, Утверждения]
---

# Утверждения
# Базовые утверждения

Каждый тестовый сценарий должен проверить результат работы тестируемого метода, будь то функция или процедура.

Для написания таких проверок реализован механизм утверждений, позволяющий в лаконичной форме описать свои ожидания, требования к результату.
Утверждения для проверки значений

Доступ к утверждениям обеспечивает метод `ЮТест.ОжидаетЧто`, который возвращает инициализированный модуль `ЮТУтверждения`, реализующий работу с утверждениями.

## Особенности реализации утверждений

* Реализованы по модели [текучих выражений](https://ru.wikipedia.org/wiki/Fluent_interface), с целью повышения удобства и читаемости тестов

```bsl
ЮТест.ОжидаетЧто(Контекст)
.ИмеетТип("Структура")
.Свойство("ПрефиксОшибки").Равно("Контекст метода с параметрами")
.Свойство("ИмяМетода").Заполнено().Равно("МетодБезИсключение")
.Свойство("ПараметрыМетода").ИмеетТип("Массив").ИмеетДлину(1);
```
:::tip
Не рекомендуется обращаться к модулю `ЮТУтверждения` напрямую, используйте `ЮТест.ОжидаетЧто`
:::

* Реализован минимально необходимый набор проверок
* Большая часть методов - это сравнения фактического и ожидаемого результатов, но есть несколько методов настройки
Expand Down Expand Up @@ -92,6 +82,10 @@ tags: [Getting started, Asserts]
* `ЛюбойЭлементСодержитСвойство` - проверяет, что в коллекции есть элемент содержащий указанное свойство
* `ЛюбойЭлементСодержитСвойствоСоЗначением` - проверяет, что в коллекции есть элемент содержащий указанное свойство, которое равно ожидаемому значению

:::tip
Полный и актуальный набор методов смотрите в описании API
:::

### Проверка методов объекта

Для проверки работы методов объекта есть набор утверждений среди описанных выше (`ВыбрасываетИсключение` и `НеВыбрасываетИсключение`), но для их работы необходимо выполнить предварительные настройки.
Expand Down
44 changes: 44 additions & 0 deletions documentation/docs/user-api/assertions/assertions-db.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
tags: [Начало, Утверждения, ДанныеИБ]
---

# Утверждения для проверки данных информационной базы

Большая часть тестируемых методов так или иначе оставляет свой след в базе, создает или изменяет записи в ИБ.

Для проверки правильности работы метода нам необходимо проверить, что изменилось в базе. В этом могут помочь утверждения проверяющие записи ИБ.

Доступ к утверждениям обеспечивает метод `ЮТест.ОжидаетЧтоТаблицаБазы`, который возвращает инициализированный модуль `ЮТУтвержденияИБ`, реализующий работу с утверждениями для ИБ.

Утверждения позволяют проверить наличие и отсутствие записей по различным условиям, для задания условий используются [предикаты](../predicates.md)

```bsl
ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
.НеСодержитЗаписи(); // В базе нет товаров
ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
.СодержитЗаписи(); // В базе есть товары
ЮТест.ОжидаетЧтоТаблицаБазы("Справочник.Товары")
.СодержитЗаписи(ЮТест.Предикат() // В базе есть товары определенного поставщика
.Реквизит("Поставщик").Равно(ДанныеСправочника.Поставщик));
ЮТест.ОжидаетЧтоТаблицаБазы("РегистрСведений.КурсыВалют")
.НеСодержитЗаписи(ЮТест.Предикат() // Курс валюты не установлен
.Реквизит("Валюта").Равно(ДанныеРегистра.Валюта)
.Реквизит("Период").БольшеИлиРавно(ДанныеРегистра.Период));
```

## Доступные методы

* `СодержитЗаписи` - проверяет наличие записей по условиям
* `НеСодержитЗаписи` - проверяет отсутствие записей по условиям
* `СодержитЗаписиСНаименованием` - проверяет наличие в таблице записей с указанным наименованием
* `СодержитЗаписиСКодом` - проверяет наличие в таблице записей с указанным кодом
* `СодержитЗаписиСНомером` - проверяет наличие в таблице записей с указанным номером
* `НеСодержитЗаписиСНаименованием` - проверяет отсутствие в таблице записей с указанным наименованием
* `НеСодержитЗаписиСКодом` - проверяет отсутствие в таблице записей с указанным кодом
* `НеСодержитЗаписиСНомером` - проверяет отсутствие в таблице записей с указанным номером

:::tip

[Предлагайте](https://github.com/bia-technologies/yaxunit/issues) и [добавляйте](https://github.com/bia-technologies/yaxunit/pulls) свои утверждения

:::
26 changes: 26 additions & 0 deletions documentation/docs/user-api/assertions/assertions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
tags: [Начало, Утверждения]
---

# Утверждения

Каждый тестовый сценарий должен проверить результат работы тестируемого метода, будь то функция или процедура.

Для написания таких проверок реализован механизм утверждений, позволяющий в лаконичной форме описать свои ожидания, требования к результату.


Как и большая часть API, утверждения реализованы по модели [текучих выражений](https://ru.wikipedia.org/wiki/Fluent_interface), с целью повышения удобства и читаемости тестов

```bsl
ЮТест.ОжидаетЧто(Контекст)
.ИмеетТип("Структура")
.Свойство("ПрефиксОшибки").Равно("Контекст метода с параметрами")
.Свойство("ИмяМетода").Заполнено().Равно("МетодБезИсключение")
.Свойство("ПараметрыМетода").ИмеетТип("Массив").ИмеетДлину(1);
```

YaxUnit содержит утверждения для:

* Проверки [значений](assertions-base.md#доступные-методы)
* Проверки [методов объекта на выброс исключений](assertions-base.md#проверка-методов-объекта)
* Проверки [данных информационной базы](assertions-db.md)
2 changes: 1 addition & 1 deletion documentation/docs/user-api/context.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
tags: [Getting started]
tags: [Начало, Контекст]
---

# Контекст
Expand Down
21 changes: 15 additions & 6 deletions documentation/docs/user-api/index.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
---
description: Create a doc page with rich content.
tags: [Getting started]
tags: [Начало]
---

# Пользовательский API

Для разработчиков тестов расширение предоставляет API для:
Для разработчиков тестов расширение предоставляет API:

* [Регистрации тестовых сценариев](test-registration.md)
* Формирования [утверждений](assertions.md) для проверки результата работы различных механизмов системы.
* Создания [тестовых данных](test-data.md)
* Передачи данных между тестами используя [контекст](context.md)
* Создания [тестовых данных](test-data/test-data.md)
* Сохранения состояния и обмена данными между тестами используя [контекст](context.md)
* [Подмены](mockito.md) алгоритмов работы системы
* [Предикаты](predicates.md), которые используются во многих механизмах движка
* [Получения данных](queries.md) информационной базы
* [Интерфейс](yaxunit-ui.md) для просмотра отчета и настройки параметров запуска тестов
* [Предикаты](predicates.md) для проверки коллекций

Доступ к API осуществляется через методы модуля `ЮТест`, например

* `ЮТест.Данные()` для доступа к методам работы с тестовыми данными
* `ЮТест.ОжидаетЧто()` для доступа к утверждения

Планируется расширять существующий API и реализовать нужный недостающий функционал.

:::tip
Не рекомендуется обращаться к модулям API напрямую, используйте `ЮТест`
:::
22 changes: 20 additions & 2 deletions documentation/docs/user-api/mockito.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
tags: [Getting started, Mock]
tags: [Начало, Мокирование]
---

# Мокито

Мокито - модуль созданный по образу популярного java-фреймворка для тестирования [Mockito](https://site.mockito.org/). Расширяет возможности тестирования, позволяет легко менять логику работы системы подменяя результаты работы методов, отключая какие-либо алгоритмы и проверки.
Expand Down Expand Up @@ -136,7 +137,6 @@ flowchart LR

Условия можно задать на равенство определенному значению, на проверку типа переданного значения или же безусловно принимать любый параметры


Существует 2 основных подхода к формированию условий вызова:

1. Явный вызов метода с параметрами: `Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(ИсточникДанных, Данные)).Вернуть(2)`
Expand Down Expand Up @@ -236,6 +236,24 @@ flowchart LR
* `Больше` - количество вызовов попавших под условия больше указанного значения
* `Меньше` - количество вызовов попавших под условия меньше указанного значения

### Ограничения параметров

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

* Маски параметров
* `ЛюбойПараметр` - ожидаем любой параметр
* `ЧисловойПараметр` - ожидаем только числовой параметр
* `СтроковыйПараметр` - ожидаем только строковый параметр
* `ТипизированныйПараметр` - ожидаем параметр указанного типа
* [Предикаты](predicates.md) позволяющие сформировать почти любые условия на параметры

Примеры

* `Когда(Метод(1, 2))`
* `Когда(Метод(Мокито.ЧисловойПараметр(), 2))`
* `Когда(Метод(ЮТест.Предикат().Больше(0), 2))`


## Кейсы использования\*

\* *В примерах опускается часть добавления метода в расширение*
Expand Down
Loading

0 comments on commit 0f9332a

Please sign in to comment.