-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
107 changed files
with
3,147 additions
and
548 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<!-- Важно: Пожалуйста, перед созданием PR создайте проблему (issue) --> | ||
<!-- Любые изменения необходимо описать и при необходимостиобсудить, прежде чем продолжить. Невыполнение этого требования может привести к отклонению запроса на включение. --> | ||
|
||
## Описание изменний | ||
|
||
<!-- Разместите здесь краткое описание изменений --> | ||
|
||
---- | ||
|
||
- [ ] Добавлены тесты | ||
- [ ] Изменения отражены в документации (при необходимости) | ||
|
||
Close #<Укажите номер issue для автоматического закрытия после принятия реквеста> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
--- | ||
title: YaxUnit. Версия 24.04 | ||
authors: alkoleft | ||
tags: [releases, yaxunit] | ||
--- | ||
|
||
[Release 24.04](https://github.com/bia-technologies/yaxunit/releases/tag/24.04) | ||
|
||
## Новое в версии | ||
|
||
### Тестовые данные | ||
|
||
* [NEW] Метод `УстановитьСсылкуНового` в конструкторе объектов [#310](https://github.com/bia-technologies/yaxunit/issues/310), спасибо [@alexandr-yang](https://github.com/alexandr-yang) | ||
* Удаление тестовых данных без учета прав [#309](https://github.com/bia-technologies/yaxunit/issues/309), спасибо [@goodwinvu](https://github.com/goodwinvu) | ||
|
||
### Зависимости | ||
|
||
* [NEW] Зависимости тестов [#314](https://github.com/bia-technologies/yaxunit/issues/314) | ||
* [NEW] Добавить возможность указывать рабочий каталог в параметрах запуска [#313](https://github.com/bia-technologies/yaxunit/issues/313) | ||
* [NEW] Зависимости тестов. Фабрика XDTO [#322](https://github.com/bia-technologies/yaxunit/issues/322) | ||
|
||
Подробнее о зависимостях вы можете узнать из [документации](/docs/features/dependencies) | ||
|
||
### Прочее | ||
|
||
* Рефакторинг механизма событий [#315](https://github.com/bia-technologies/yaxunit/issues/315) | ||
Добавлена возможность создавать обработчики событий за пределами расширения движка, подробнее в [документации](docs/features/events) | ||
* Добавлен шаблон PR | ||
|
||
## Исправленные ошибки | ||
|
||
* [Bug]: Не работает формат выбода ошибки HTML на Mac [#319](https://github.com/bia-technologies/yaxunit/issues/319), спасибо [@alexandr-yang](https://github.com/alexandr-yang) | ||
* Мелкие исправления в документации [#320](https://github.com/bia-technologies/yaxunit/issues/320), спасибо [@alexandr-yang](https://github.com/alexandr-yang) | ||
* [Bug]: Некорректное время результатов тестов в отчете формата allure, спасибо [@AlexPCRus](https://github.com/AlexPCRus) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
# Зависимости | ||
|
||
Предположим у вас есть набор серверных тестов, которые требуют наличия файлов хранящихся в репозитории на клиенте. | ||
Для выполнения этих тестов вам необходимо передать файлы на сервер перед выполнением. В дополнение, передачу необходимо выполнить только один раз и только если выполняются тесты, для которых файлы нужны. | ||
|
||
В решении этой проблемы может помочь механизм зависимостей, который: | ||
|
||
* Позволяет указывать зависимости тестов | ||
* Для разрешения зависимостей используется код 1с, вызываемый с клиента | ||
* Разрешение зависимостей выполняется единожды и результат может быть переиспользован в различных тестах | ||
* Если по какой-то причине не удалось разрешить зависимость, то зависимые тесты не будут выполнятся. | ||
* YAxUnit на данный момент реализует зависимость от файлов проекта, которая проверяет наличие нужных файлов и переносит их на сервер. | ||
|
||
Например, вам необходимо проверить, что файл `.gitignore` содержит исключение для `ConfigDumpInfo.xml`. | ||
|
||
```bsl | ||
Процедура ИсполняемыеСценарии() Экспорт | ||
ЮТТесты. | ||
.ДобавитьТест("ПроверитьДанныеGitIgnore") | ||
.ЗависитОт().ФайлыПроекта(".gitignore"); // Указываем зависимость | ||
КонецПроцедуры | ||
Процедура ПроверитьДанныеGitIgnore() Экспорт | ||
ПолноеИмяФайла = ЮТест.Зависимость(ЮТЗависимости.ФайлыПроекта(".gitignore")).ПолноеИмя; // Получаем результат работы зависимости | ||
ЮТест.ОжидаетЧто(ЮТФайлы.Существует(ПолноеИмяФайла), "Файл каталога проекта не существует") | ||
.ЭтоИстина(); | ||
Данные = ЮТОбщий.ДанныеТекстовогоФайла(ПолноеИмяФайла); | ||
ЮТест.ОжидаетЧто(Данные, "Содержимое файла") | ||
.Содержит("ConfigDumpInfo.xml"); | ||
КонецПроцедуры | ||
``` | ||
|
||
В примере движок проверит наличие файла `.gitignore` в каталоге проекта и перенесет его на сервер и сохранит в контексте путь к у файлу (причем, для сервера и клиент будут сохранены разные пути). | ||
|
||
Другой пример, в своих тестах мы добавили зависимость для создания `ФабрикаXDTO` из файлов: | ||
|
||
```bsl | ||
Процедура ИсполняемыеСценарии() Экспорт | ||
ЮТТесты. | ||
.ДобавитьТест("ВыполнитьОбмен") | ||
.ЗависитОт().ФабрикаСбора(); | ||
КонецПроцедуры | ||
Процедура ВыполнитьОбмен() Экспорт | ||
Фабрика = ЮТест.Зависимость(ЮТЗависимости.ФабрикаСбора()).Фабрика; // Получаем результат работы зависимости | ||
... | ||
КонецПроцедуры | ||
``` | ||
|
||
Здесь для тестирования различных обменов мы создаем, на основании файлов хранящихся в репозитории, фабрику XDTO. При этом фабрика создается только один раз и доступна во всех серверных тестах. | ||
|
||
## Зачем нужны зависимости | ||
|
||
Основной целью создания зависимостей было предоставление единого механизма для работы с "тяжелыми" и часто используемыми зависимостями тестов. В большинстве случаев достаточно создать общий метод и вызывать его в тестах или событиях и таким образом готовить контекст теста. Но в некоторых случаях, таких как использование "клиентских" файлов в серверных тестах, этот вариант не подходит. Чтобы избежать костылей в подобных ситуациях и были добавлены зависимости. | ||
|
||
## Принцип работы | ||
|
||
1. В своих тестах вы указываете зависимости для тестов (наборов или модулей). | ||
2. При запуске, YAxUnit анализирует какие тесты вы хотите запустить и собирает по ним реестр зависимостей. | ||
3. Движок обрабатывает реестр зависимостей: | ||
* вызывает методы реализующие зависимости | ||
* сохраняет признак успешности обработки зависимости | ||
* сохраняет данные, которые сформировала зависимость. | ||
4. Тесты связанные с неразрешенными зависимостями переводятся в статус "Пропущен" и не вызываются при прогоне. | ||
5. После этого происходит запуск тестов. | ||
6. Любой тест может обратиться к результатам обработки зависимостей используя `ЮТест.Зависимость` | ||
|
||
## Доступные виды зависимостей | ||
|
||
### Зависимость `ФайлыПроекта` | ||
|
||
Зависимость тестов от файлов проекта. Если в каталоге проекта нет этих файлов, то тест не будет выполнен. | ||
|
||
:::tip | ||
Каталог проекта задается в [параметрах запуска](../getting-started/run/configuration.md) - `projectPath`. | ||
::: | ||
|
||
Эта зависимость переносит файлы на сервер, чтобы они были доступны в серверных тестах и сохраняет в контексте путь к перенесенному файлу/каталогу (для клиентского теста будет хранится путь к файлам на клиенте). | ||
|
||
```bsl | ||
Процедура ИсполняемыеСценарии() Экспорт | ||
ЮТТесты. | ||
.ДобавитьТест("РаботаСФайлами") | ||
.ЗависитОт().ФайлыПроекта("ОтносительныеПуть"); // Указываем зависимость | ||
КонецПроцедуры | ||
Процедура РаботаСФайлами() Экспорт | ||
КаталогСФайлами = ЮТест.Зависимость(ЮТЗависимости.ФайлыПроекта("ОтносительныеПуть")).ПолноеИмя; | ||
... | ||
КонецПроцедуры | ||
``` | ||
|
||
### Зависимость `ФабрикаXDTO` | ||
|
||
Зависимость тестов от фабрики XDTO, созданной на основании файлов проекта. | ||
Создает на сервере из файлов фабрику и сохраняет ее в контекст. | ||
|
||
```bsl | ||
Процедура ИсполняемыеСценарии() Экспорт | ||
ЮТТесты. | ||
..ДобавитьСерверныйТест("ФабрикаJUnit").ЗависитОт().ФабрикаXDTO("fixtures/junit") | ||
КонецПроцедуры | ||
Процедура ФабрикаJUnit() Экспорт | ||
Фабрика = ЮТест.Зависимость(ЮТЗависимости.ФабрикаXDTO("fixtures/junit")).Фабрика; | ||
ТестовыйНабор = ЮТест.Данные().КонструкторОбъектаXDTO("testsuite", "http://junit.org/schema", Фабрика) | ||
.ФикцияНезаполненных() | ||
.ДанныеОбъекта(); | ||
ЮТест.ОжидаетЧто(ТестовыйНабор) | ||
.ИмеетТип(Тип("ОбъектXDTO")) | ||
.Существует() | ||
.ИмеетСвойство("properties") | ||
.ИмеетСвойство("testcase") | ||
.ИмеетСвойство("failures"); | ||
КонецПроцедуры | ||
``` |
Oops, something went wrong.