1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-11-24 08:22:22 +02:00

Merge pull request #50 from alkoleft/feature/doc

Апгрейд документации
This commit is contained in:
Maximov Valery 2023-02-15 08:25:31 +03:00 committed by GitHub
commit 4a7abf319e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 13888 additions and 101 deletions

View File

@ -1,85 +0,0 @@
# Запуск
Для запуска тестов необходимо запустить 1С:Предприятие с параметром `RunUnitTests`, при необходимости можно указать путь к файлу конфигурации запуска.
## Конфигурация запуска
Конфигурация настраивается в файле json и может иметь следующие параметры:
| Имя параметра | Тип | Значение по умолчанию | Описание |
|-------------------|-----------|-----------------------|--------------------------------------------------------------------------------------------------------------|
| `filter` | `Object` | Object, смотрите ниже | Параметры фильтрации, поиска тестов |
| `reportFormat` | `String` | `"jUnit"` | Формат отчета о тестировании, возможные значения: `"jUnit"`, `"JSON"` |
| `reportPath` | `String` | `""` | Путь к формируемому отчету, можно указать или каталог (в которому будет создан файл отчета) или путь к файлу |
| `closeAfterTests` | `Boolean` | `True` | Признак закрытия 1С:Предприятие по завершению тестирования |
| `showReport` | `Boolean` | `True` | Открыть форму отчета завершению тестирования |
| `logging` | `Object` | Смотрите ниже | Параметры логирования, подробнее ниже |
Параметры фильтрации:
| Имя параметра | Тип | Значение по умолчанию | Описание |
|---------------|---------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
| `extensions` | `Array` | `["tests"]` | Список имен расширений, из которых грузятся тесты |
| `modules` | `Array` | `Null` | Список имен модулей, из которых грузятся тесты |
| `tests` | `Array` | `Null` | Список полных путей к исполняемым тестам (`[имя модуля.имя теста]`) |
| `suites` | `Array` | `Null` | **Не реализованно.** Список имен тестовых наборов, которые будут запускаться |
| `tags` | `Array` | `Null` | **Не реализованно.** Список тегов, которые будут запускаться |
| `contexts` | `Array` | `Null` | Список имен контекстов исполнения, в которых будут запускаться тесты |
| `paths` | `Array` | `Null` | **Не реализованно.** Список полных путей к исполняемым тестам (`[имя модуля.имя теста|имя модуля.имя теста.имя контекста]`) |
Параметры логирования:
| Имя параметра | Тип | Значение по умолчанию | Описание |
|---------------|-----------|-----------------------|---------------------------------------------------------------------|
| `file` | `String` | `""` | Путь к файлу лога |
| `enable` | `Boolean` | `Null` | Признак использования логирования. Если не указан, зависит от файла, если он указан - вкл, если не указан - выкл |
| `level` | `String` | `"debug"` | Уровень детализации лога. Возможные значения: `"debug"`, `"info"`, `"error"` |
Примеры:
1. Запустить тесты из расширения `tests`, расположенные в модулях `МодульТестов1`, `МодульТестов2`, закрыть предприятие по завершении и сохранить отчет в формате `junit`
```JSON
{
"filter": {
"modules": ["МодульТестов1", "МодульТестов2"]
},
"reportPath": "C:\\temp\\jUnit\\report.xml",
"reportFormat": "jUnit",
"closeAfterTests": true
}
```
2. Запустить все тесты из расширения `YAXUNIT` и сохранить отчет файл `C:\temp\jUnit\report.xml`, остальные параметры будут установлены по умолчанию
```JSON
{
"filter": {
"extensions": ["YAXUNIT"]
},
"reportPath": "C:\\temp\\jUnit\\report.xml"
}
```
3. Запустить все тесты с выводом подробного лога в файл, сохранить отчет файл `C:\temp\jUnit\report.xml`
```JSON
{
"reportPath": "C:\\temp\\jUnit\\report.xml",
"logging": {
"file": "C:\\temp\\jUnit\\tests.log",
"level": "debug"
}
}
```
## Строка запуска предприятия
`[путь к клиенту 1С] ENTERPRISE [Параметры подключения к ИБ] [Параметры авторизации] /C RunUnitTests=/путь/к/конфигурационному/файлу`
*После загрузки расширения в информационную базу необходимо отключить у него `безопасный режим` и `защиту от опасных действий`*
Пример:
`"C:\Program Files\1cv8\8.3.18.1698\bin\1cv8c.exe" ENTERPRISE /IBName MyInfoBase /N Admin /C RunUnitTests=C:\tmp\test-config.json`
Запуск тестов в режиме тонкого клиента на информационной базе `MyInfoBase` под пользователем `Admin` по конфигурации указанной в файле `C:\tmp\test-config.json`

20
documentation/.gitignore vendored Normal file
View File

@ -0,0 +1,20 @@
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

41
documentation/README.md Normal file
View File

@ -0,0 +1,41 @@
# Website
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

View File

@ -0,0 +1,7 @@
---
sidebar_position: 1
---
# Программный интерфейс
Здесь будет расположена информация о программном интерфейсе YAxUnit

View File

@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

View File

@ -0,0 +1,7 @@
---
sidebar_position: 1
---
# Руководство разработчика
Здесь будут собраны материалы по доработке тестового движка.

View File

@ -0,0 +1,32 @@
---
sidebar_position: 2
tags: [Getting started]
---
# Пишем первый тест
Для создания теста нужно в расширении (в отдельном или в том же) добавить модуль, содержащий экспортный метод регистрации - ИсполняемыеСценарии и реализовать тесты.
```bsl title="ОМ_ПервыйТест"
#Область СлужебныйПрограммныйИнтерфейс
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("Сложение")
.СПараметрами(2, 3, 5)
.СПараметрами(2, -3, -1)
;
КонецПроцедуры
Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт
ЮТест.ОжидаетЧто(ПервыйОперанд + ВторойОперанд)
.ИмеетТип("Число")
.Равно(Результат);
КонецПроцедуры
#КонецОбласти
```

View File

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

View File

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,67 @@
---
sidebar_position: 2
sidebar_label: Установка плагина EDT
---
# Установка плагина для работы с тестами в EDT
```mdx-code-block
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
```
Для того, что бы вам и нам было проще писать тесты мы разработали плагин для EDT.
С его помощью вы сможете:
* Запускать и отлаживать свои тесты;
* Просматривать результаты выполнения.
* И [что-то еще](https://github.com/bia-technologies/edt-test-runner/blob/develop/docs/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8.md)
Для установки плагина вам необходимо воспользоваться стандартным функционалом Eclipse (EDT) `Установить новое ПО...`.
* Открываем EDT.
* Переходим к `Установить новое ПО` (в меню `Справка`);
* Добавляем новый репозиторий;
```mdx-code-block
<Tabs>
<TabItem value="master" label="Основной репозиторий">
```
```url
https://bia-technologies.github.io/edt-test-runner/repository
```
```mdx-code-block
</TabItem>
<TabItem value="develop" label="Develop">
```
```url
https://bia-technologies.github.io/edt-test-runner/dev/repository
```
```mdx-code-block
</TabItem>
</Tabs>
```
![Установка плагина](images/plugin-install-from-rep.png)
:::tip совет
Для ускорения установки можно убрать галочку `Обращаться во время инсталляции ко всем сайтам ...`
:::
* Нажимаем далее;
* Принимаем лицензию;
* Соглашаемся с предупреждением безопасности;
* И перезагружаем IDE.
:::note примечание
EDT будет долго перезагружаться и это нормально.
:::

View File

@ -1,29 +1,43 @@
---
sidebar_position: 1
tags: [Getting started]
---
# Установка
YAXUnit - это расширение для 1С:Предприятия, которое надо добавить к вашему проекту.
## Требования
* 1С:Предприятие версии 8.3.10 или старше
## Установка в EDT
### Первичная установка тестового движка в рабочее пространство (workspace)
1. Качаем архив [последнего релиза](https://github.com/bia-technologies/yaxunit/releases/latest)
2. Распаковываем содержимое в каталог с исходниками (не в воркспейс)
3. Импортируем проект
1. Скачаем архив [релиза](https://github.com/bia-technologies/yaxunit/releases/latest)
![Страница релиза](images/gh-release.png)
2. Копируем из архива расширение расположенное в каталоге `exts/yaxunit/` в свой каталог с исходниками (не в воркспейс)
![Содержимое архива](images/gh-release-content.png)
3. Импортируем проект расширения в воркспейс
![Импорт проекта](images/project-import.png)
4. Привязываем импортированный проект расширения к конфигурации
![Связь с базовым проектом](images/link-base-project.png)
5. Обновляем конфигурацию
6. В конфигураторе снимаем с расширения **безопасный режим** и **защиту от опасных действий**
7. Готово, можно приступить к написанию тестов.
:::tip совет
Для удобства разработки тестов рекомендуется [установить плагин](install-plugin.md)
:::
### Обновление тестового движка
1. Качаем архив [последнего релиза](https://github.com/bia-technologies/yaxunit/releases/latest)
1. Скачаем архив [релиза](https://github.com/bia-technologies/yaxunit/releases/latest)
2. Если вы дорабатывали движок, то скачиваем архив оригинальной установленной версии движка
3. Разархивируем их во временный каталог
4. Воспользуемся механизмом сравнения объединения EDT
![Сравнение объединение](images/compare.png)
* Второй источник - каталог к новой версии тестового движка
* Использование третьего источника нужно для трехстороннего сравнения и применяется при доработках движка.
@ -32,7 +46,8 @@
## Установка в конфигуратор
1. Качаем расширение (cfe) из [последнего релиза](https://github.com/bia-technologies/yaxunit/releases/latest)
1. Скачаем расширение (cfe) [релиза](https://github.com/bia-technologies/yaxunit/releases/latest)
![Страница релиза](images/gh-release.png)
2. Загружаем в конфигуратор
3. Снимаем с расширения **безопасный режим** и **защиту от опасных действий**
4. Готово

View File

@ -0,0 +1,72 @@
# Конфигурация запуска
Конфигурация настраивается в файле json и может иметь следующие параметры.
## Основные параметры
| Имя параметра | Тип | Значение по умолчанию | Описание |
|-------------------|-----------|-------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
| `filter` | `Object` | [Object, смотрите ниже](#параметры-фильтрации) | Параметры фильтрации, поиска тестов |
| `reportFormat` | `String` | `"jUnit"` | Формат отчета о тестировании, возможные значения: `"jUnit"`, `"JSON"` |
| `reportPath` | `String` | `""` | Путь к формируемому отчету, можно указать или каталог (в которому будет создан файл отчета) или путь к файлу |
| `closeAfterTests` | `Boolean` | `True` | Признак закрытия 1С:Предприятие по завершению тестирования |
| `showReport` | `Boolean` | `True` | Открыть форму отчета завершению тестирования |
| `logging` | `Object` | [Object, смотрите ниже](#параметры-логирования) | Параметры логирования, подробнее ниже |
## Параметры фильтрации
| Имя параметра | Тип | Значение по умолчанию | Описание |
|---------------|---------|-----------------------|------------------------------------------------------------------------------|
| `extensions` | `Array` | `["tests"]` | Список имен расширений, из которых грузятся тесты |
| `modules` | `Array` | `Null` | Список имен модулей, из которых грузятся тесты |
| `tests` | `Array` | `Null` | Список полных путей к исполняемым тестам (`[имя модуля.имя теста]`) |
| `suites` | `Array` | `Null` | **Не реализованно.** Список имен тестовых наборов, которые будут запускаться |
| `tags` | `Array` | `Null` | **Не реализованно.** Список тегов, которые будут запускаться |
| `contexts` | `Array` | `Null` | Список имен контекстов исполнения, в которых будут запускаться тесты |
| `paths` | `Array` | `Null` | **Не реализованно.** Список полных путей к исполняемым тестам |
## Параметры логирования
| Имя параметра | Тип | Значение по умолчанию | Описание |
|---------------|-----------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
| `file` | `String` | `""` | Путь к файлу лога |
| `enable` | `Boolean` | `Null` | Признак использования логирования. Если не указан, зависит от параметра `file`, если он указан - вкл, если не указан - выкл |
| `level` | `String` | `"debug"` | Уровень детализации лога. Возможные значения: `"debug"`, `"info"`, `"error"` |
Примеры:
1. Запустить тесты расположенные в модулях `МодульТестов1`, `МодульТестов2`, закрыть предприятие по завершении и сохранить отчет в формате `junit`
```JSON
{
"filter": {
"modules": ["МодульТестов1", "МодульТестов2"]
},
"reportPath": "C:\\temp\\jUnit\\report.xml",
"reportFormat": "jUnit",
"closeAfterTests": true
}
```
2. Запустить все тесты из расширения `YAXUNIT` и сохранить отчет файл `C:\temp\jUnit\report.xml`, остальные параметры будут установлены по умолчанию
```JSON
{
"filter": {
"extensions": ["YAXUNIT"]
},
"reportPath": "C:\\temp\\jUnit\\report.xml"
}
```
3. Запустить все тесты с выводом подробного лога в файл, сохранить отчет файл `C:\temp\jUnit\report.xml`
```JSON
{
"reportPath": "C:\\temp\\jUnit\\report.xml",
"logging": {
"file": "C:\\temp\\jUnit\\tests.log",
"level": "debug"
}
}
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,30 @@
# Запуск
Для запуска тестов необходимо запустить 1С:Предприятие с параметром `RunUnitTests`, при необходимости можно указать путь к файлу [конфигурации запуска](configuration.md).
:::caution Важно
*После загрузки расширения в информационную базу необходимо отключить у него `безопасный режим` и `защиту от опасных действий`*
:::
## Запуск из EDT
Для запуска тестов из EDT необходимо установить [плагин](../install/install-plugin.md), либо вручную создать файл [конфигурации запуска](configuration.md) и указать его в параметрах запуска.
![EDT](images/from-edt.png)
## Запуск из конфигуратора
Для запуска тестов из конфигуратора вы можете
* Вручную создать файл [конфигурации запуска](configuration.md) и указать его в параметрах запуска
![Конфигуратор](images/from-configurator.png)
* Воспользоваться [интерфейсом настройки](../yaxunit-ui.md#интерфейс-настройки-конфигурации)
## Строка запуска предприятия
`[путь к клиенту 1С] ENTERPRISE [Параметры подключения к ИБ] [Параметры авторизации] /C RunUnitTests=/путь/к/конфигурационному/файлу`
Пример:
`"C:\Program Files\1cv8\8.3.18.1698\bin\1cv8c.exe" ENTERPRISE /IBName MyInfoBase /N Admin /C RunUnitTests=C:\tmp\test-config.json`
Запуск тестов в режиме тонкого клиента на информационной базе `MyInfoBase` под пользователем `Admin` по конфигурации указанной в файле `C:\tmp\test-config.json`

View File

@ -1,3 +1,7 @@
---
tags: [Getting started, Asserts]
---
# Утверждения
Каждый тестовый сценарий должен проверить результат работы тестируемого метода, будь то функция или процедура.

View File

@ -1,3 +1,7 @@
---
tags: [Getting started]
---
# Контекст
Одним из важнейших блоков работы тестового движка является механизм контекстов.

View File

@ -1,8 +1,13 @@
---
description: Create a doc page with rich content.
tags: [Getting started]
---
# Пользовательский API
Для разработчиков тестов расширение предоставляет API для:
* [Регистрации тестовых сценариев](test-registration.md)
* [Регистрации тестовых сценариев](test-registration)
* Формирования [утверждений](assertions.md) для проверки результата работы различных механизмов системы.
* Создания [тестовых данных](test-data.md)
* Передачи данных между тестами используя [контекст](context.md)

View File

@ -1,3 +1,6 @@
---
tags: [Getting started, Mock]
---
# Мокито
Мокито - модуль созданный по образу популярного java-фреймворка для тестирования [Mockito](https://site.mockito.org/). Расширяет возможности тестирования, позволяет легко менять логику работы системы подменяя результаты работы методов, отключая какие-либо алгоритмы и проверки.
@ -28,9 +31,15 @@
Работа с Мокито делится на 3 стадии:
1. Обучение - настраиваем поведение методов системы
2. Прогон - выполнение теста целевого метода
3. Проверка - анализ вызовов
```mermaid
flowchart LR
training(Обучение) --> run(Прогон, запуск тестового метода)
run --> check(Проверка)
```
* [Обучение](#обучение) - настраиваем поведение методов системы
* [Прогон](#прогон) - выполнение теста целевого метода
* [Проверка](#проверка) - анализ вызовов
## Использование
@ -44,7 +53,7 @@
* использовать явный вызов метода с параметрами на стадии обучения, например `Мокито.Обучение(Справочники.ИсточникиДанных).Когда(Справочники.ИсточникиДанных.СохраненныеБезопасныеДанные(Справочник)).Вернуть(Результат)`
* использовать явный вызов метода с параметрами на стадии проверки, например `Мокито.Проверить(Справочники.ИсточникиДанных).КоличествоВызовов(Справочники.ИсточникиДанных.СохраненныеБезопасныеДанные(Справочник)).Больше(1)`
Примеры добавления методов в расширение:
Примеры добавления методов в расширение.
#### Метод общего модуля
@ -178,7 +187,7 @@
1. `Мокито.Обучение(РаботаСHTTP).Когда("ОтправитьОбъектНаСервер", Мокито.МассивПараметров(Мокито.ТипизированныйПараметр(ТипИсточникДанных), Мокито.ЧисловойПараметр())).Вернуть(3)`
2. `Мокито.Обучение(РаботаСHTTP).Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ТипизированныйПараметр(ТипИсточникДанных), Мокито.ЧисловойПараметр()).Вернуть(3)`
## Прогон
### Прогон
После обучения, настройки реакций на вызовы методов, можно запускать тест нужного метода. Для перехода к этому режиму работы Мокито используется метод `Прогон`.
@ -198,7 +207,7 @@
Результат = РаботаСHTTP.ОтправитьОбъектНаСервер(Справочники.ИсточникиДанных.FTP, 2); // Результат будет равен 2
```
## Проверка
### Проверка
После прогона теста можно проверить какие методы, с какими параметрами вызывались. Для этих целей необходимо воспользоваться методом `Проверить`

View File

@ -1,3 +1,6 @@
---
tags: [Getting started, Test data]
---
# Тестовые данные
Почти в каждом тесте разработчику необходимы данные, которые он будет использовать при тестировании: элементы справочников, документы, остатки и тд.

View File

@ -1,3 +1,6 @@
---
tags: [Getting started]
---
# Регистрация тестовых методов (ЮТТесты)
Кроме того, чтобы написать тестовые сценарии, разработчик должен зарегистрировать их в движке.

View File

@ -2,7 +2,7 @@
## Интерфейс отчета
Для просмотра результатов тестирования в режиме 1С:Предприятие, вам необходимо в параметрах запуска указать [настройку](../README.md#конфигурация-запуска) `showReport`
Для просмотра результатов тестирования в режиме 1С:Предприятие, вам необходимо в параметрах запуска указать [настройку](run) `showReport`
Например, создав файла настроек
```json

View File

@ -0,0 +1,178 @@
// @ts-check
// Note: type annotations allow type checking and IDEs autocompletion
const lightCodeTheme = require('prism-react-renderer/themes/github');
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
/** @type {import('@docusaurus/types').Config} */
const config = {
title: 'YAx Unit',
tagline: 'Модульные тесты для 1С - это не сложно',
favicon: 'img/logo.png',
// Set the production url of your site here
url: 'https://bia-technologies.github.io/',
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: '/yaxunit',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: 'bia-technologies', // Usually your GitHub org/user name.
projectName: 'yaxunit', // Usually your repo name.
deploymentBranch: 'gh-pages',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
// Even if you don't use internalization, you can use this field to set useful
// metadata like html lang. For example, if your site is Chinese, you may want
// to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
presets: [
[
'classic',
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
routeBasePath: 'docs',
sidebarPath: require.resolve('./sidebars.js'),
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
editUrl:
'https://github.com/bia-technologies/yaxunit/',
},
blog: false,
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
}),
]
],
plugins: [
[
'@docusaurus/plugin-content-docs',
{
id: 'api',
path: 'api',
routeBasePath: 'api',
sidebarPath: require.resolve('./sidebarsAPI.js'),
// ... other options
},
],
[
'@docusaurus/plugin-content-docs',
{
id: 'lessons',
path: 'lessons',
routeBasePath: 'lessons',
sidebarPath: require.resolve('./sidebarsLessons.js'),
// ... other options
},
],
[
'@docusaurus/plugin-content-docs',
{
id: 'contributing',
path: 'contributing',
routeBasePath: 'contributing',
sidebarPath: require.resolve('./sidebarsContributing.js'),
// ... other options
},
]
],
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
// Replace with your project's social card
navbar: {
title: 'YAx Unit',
logo: {
alt: 'YaxUnit Logo',
src: 'img/logo.png',
},
items: [
{
type: 'doc',
docId: 'user-api/index',
position: 'left',
label: 'Описание',
},
{
type: 'doc',
docId: 'index',
docsPluginId: 'lessons',
position: 'left',
label: 'Уроки',
},
{
type: 'doc',
docId: 'index',
docsPluginId: 'api',
position: 'left',
label: 'API',
},
{
type: 'doc',
docId: 'index',
docsPluginId: 'contributing',
position: 'left',
label: 'Руководство разработчика',
},
{
href: 'https://github.com/bia-technologies/yaxunit',
label: 'bia-technologies/yaxunit',
position: 'right',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Tutorial',
to: '/docs/user-api',
},
],
},
{
title: 'Community',
items: [
{
label: 'Telegram',
href: 'https://t.me/BIAOpenTools/12',
}
],
},
{
title: 'More',
items: [
{
label: 'GitHub',
href: 'https://github.com/bia-technologies/yaxunit',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} BIA Technologies, Inc. Built with Docusaurus.`,
},
prism: {
theme: lightCodeTheme,
darkTheme: darkCodeTheme,
},
}),
markdown: {
mermaid: true,
},
themes: ['@docusaurus/theme-mermaid'],
};
module.exports = config;

View File

@ -0,0 +1,3 @@
# Уроки и примеры использования YAxUnit
Здесь будут собраны различные материалы для лучшего понимая принципов написания тестов в работы с YAxUnit

12966
documentation/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
{
"name": "documentation",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@docusaurus/core": "2.3.1",
"@docusaurus/preset-classic": "2.3.1",
"@docusaurus/theme-mermaid": "^2.3.1",
"@mdx-js/react": "^1.6.22",
"clsx": "^1.2.1",
"prism-react-renderer": "^1.3.5",
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "2.3.1"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"engines": {
"node": ">=16.14"
}
}

33
documentation/sidebars.js Normal file
View File

@ -0,0 +1,33 @@
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
// @ts-check
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
module.exports = sidebars;

View File

@ -0,0 +1,33 @@
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
// @ts-check
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
api: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
module.exports = sidebars;

View File

@ -0,0 +1,33 @@
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
// @ts-check
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
contributing: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
module.exports = sidebars;

View File

@ -0,0 +1,33 @@
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
// @ts-check
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
lessons: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
module.exports = sidebars;

View File

@ -0,0 +1,30 @@
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #2e8555;
--ifm-color-primary-dark: #29784c;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205d3b;
--ifm-color-primary-light: #33925d;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-lightest: #3cad6e;
--ifm-code-font-size: 95%;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme='dark'] {
--ifm-color-primary: #25c2a0;
--ifm-color-primary-dark: #21af90;
--ifm-color-primary-darker: #1fa588;
--ifm-color-primary-darkest: #1a8870;
--ifm-color-primary-light: #29d5b0;
--ifm-color-primary-lighter: #32d8b4;
--ifm-color-primary-lightest: #4fddbf;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,197 @@
---
sidebar_position: 0
slug: /
---
# YAXUnit. Расширение для запуска тестов
----
[![Actions Status](https://github.com/bia-technologies/yaxunit/actions/workflows/sq.yml/badge.svg)](https://github.com/bia-technologies/yaxunit/actions)
[![Download](https://img.shields.io/github/release/bia-technologies/yaxunit.svg?label=download&style=flat)](https://github.com/bia-technologies/yaxunit/releases/latest)
[![GitHub Releases](https://img.shields.io/github/downloads/bia-technologies/yaxunit/latest/total?style=flat-square)](https://github.com/bia-technologies/yaxunit/releases)
[![Quality Gate](https://sonar.openbsl.ru/api/project_badges/measure?project=yaxunit&metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=yaxunit)
[![Maintainability](https://sonar.openbsl.ru/api/project_badges/measure?project=yaxunit&metric=sqale_rating)](https://sonar.openbsl.ru/dashboard?id=yaxunit)
Обсудить в [телеграмм чате](https://t.me/BIAOpenTools/12)
----
- [Назначение](#назначение)
- [Возможности](#возможности)
- [Пример тестового модуля](#пример-тестового-модуля)
- [Запуск](#запуск)
- [Запуск из EDT](#запуск-из-edt)
- [Запуск вне EDT](#запуск-вне-edt)
- [Благодарности](#благодарности)
- [Лицензия](#лицензия)
## Назначение
Самостоятельное расширение для написания и выполнения модульного тестирования.
### Возможности
- YAXUnit - это расширение с открытым исходным кодом, которое используется для написания и выполнения тестов
- Разрабатывалось с оглядкой на JUnit5, пожалуй, лучший фреймворк тестирования
- Предоставляет движок выполнения тестов
- Предоставляет утверждения для проверки ожидаемых результатов
- Тесты могут быть организованы в наборы и выполняться в разных контекстах
- Позволяет быстрее и проще не только писать, но и читать тесты
- Результаты тестирования могут быть сохранены в отчет, на текущий момент jUnit и json.
- Большая часть пользовательского API реализована как [текучие выражения](https://ru.wikipedia.org/wiki/Fluent_interface)
- Предусмотрена возможность расширения функциональности, можно регистрировать свои форматы отчетов, добавлять модули с утверждениями
- Реализован [плагин для EDT](https://github.com/bia-technologies/edt-test-runner), который упрощает процесс запуска тестов
Подробнее ознакомиться с функциональностью вы можете изучив [документацию](/docs/user-api).
А для того, что бы начать писать тесты необходимо [установить расширение](/docs/install) в свою IDE (конфигуратор или EDT).
## Пример тестового модуля
Для создания теста нужно в расширении (в отдельном или в том же) добавить модуль, содержащий экспортный метод регистрации - `ИсполняемыеСценарии` и реализовать тесты.
Пример модуля тестов:
```bsl
#Область СлужебныйПрограммныйИнтерфейс
Процедура ИсполняемыеСценарии() Экспорт
// Регистрация тестов
ЮТТесты // Регистрация тестов выполняет через модуль регистратор
.ДобавитьТестовыйНабор("Математические методы") // Набор - объединение тестов
.ДобавитьТест("Сложение") // Обязательно при регистрации указываем имя экспортного метода
.ДобавитьТест("Вычитание", "Вычитание") // Также можно указать представление теста
.ДобавитьТест("Вычитание", "ВычитаниеСервер", , "Сервер") // Контекст исполнения, по умолчанию тест выполняется во всех контекстах модуля
.ДобавитьКлиентскийТест("УмножениеНаКлиенте") // Есть отдельный метод для регистрации клиентских тестов
.ДобавитьСерверныйТест("ДелениеНаСервере", "Деление на сервер") // Есть отдельный метод для регистрации серверных тестов
.ДобавитьТестовыйНабор("Строковые методы")
.ДобавитьТест("СтрНайти")
.ДобавитьТест("СтрРазделить");
КонецПроцедуры
#КонецОбласти
#Область Тесты
Процедура Сложение() Экспорт
// Реализация теста на сложение
ЮТест.ОжидаетЧто(2 + 3, "2 + 3") // Используя модуль утверждений установим проверяемое значение и пояснение
.ИмеетТип("Число") // Проверим тип
.Заполнено() // Заполненность проверяемого значения
.Больше(0) // Сравним с нулем
.Равно(5); // Проверим ожидаемый результат
ЮТест.ОжидаетЧто(-8 + 8, "-8 + 8") // Проверим второй вариант
.Равно(0);
КонецПроцедуры
Процедура Вычитание() Экспорт
// Реализация теста на вычитание
ЮТест.ОжидаетЧто(2 - 3, "2 - 3").ИмеетТип("Число").Заполнено().Меньше(0);
КонецПроцедуры
#КонецОбласти
#Область События
// Также в тесте можно обрабатывать события выполнения
// Например можно реализовать подготовку и удаление тестовых данных
// Зачистку временных файлов, настройку системы
Процедура ПередВсемиТестами() Экспорт
// Выполняется перед запуском всех тестов контекста, те если есть тесты и на клиенте и на сервер, то метод будет выполнен 2 раза
Сообщить("Запуск тестирования");
КонецПроцедуры
Процедура ПередТестовымНабором() Экспорт
// Выполняется перед каждым тестовым набором для каждого контекста выполнения
Контекст = ЮТест.КонтекстТестовогоНабора(); // Контекст набора служит для хранения любых данных, нужных при тестировании
// Контекст живет в рамках контекста выполнения,
// таки образом, через контекст нельзя передавать данные между серверными и клиентскими тестами
Контекст.Вставить("ВремяНачала", ТекущаяУниверсальнаяДатаВМиллисекундах());
КонецПроцедуры
Процедура ПередКаждымТестом() Экспорт
// Выполняется перед каждым тестом
Контекст = ЮТест.КонтекстТеста(); // Контекст теста служит для хранения любых данных, нужных при тестировании
// Контекст создает перед тестом и уничтожается после его выполнения
// В контекст например, можно помещать созданные в процессе данные, что бы потом их удалить
Контекст.Вставить("ВремяНачала", ТекущаяУниверсальнаяДатаВМиллисекундах());
КонецПроцедуры
Процедура ПослеКаждогоТеста() Экспорт
// Выполняется после каждого теста
Контекст = ЮТест.КонтекстТеста();
Сообщить("Время выполнения теста: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - Контекст.ВремяНачала));
КонецПроцедуры
Процедура ПослеТестовогоНабора() Экспорт
// Выполняется после каждого тестового набора для каждого контекста выполнения
// Применяется для очистки данных и т.д.
Контекст = ЮТест.КонтекстТестовогоНабора();
Сообщить("Время выполнения набора: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - Контекст.ВремяНачала));
КонецПроцедуры
Процедура ПослеВсехТестов() Экспорт
// Выполняется после выполнения всех тестов контекста, те если есть тесты и на клиенте и на сервер, то метод будет выполнен 2 раза
// В этом событии все контексты уже уничтожены
Сообщить("Тестирование завершено");
КонецПроцедуры
#КонецОбласти
```
После запуска тестов модуля в EDT (используя [плагин](https://github.com/bia-technologies/edt-test-runner)) получаем такой отчет:
![Отчет](images/report.png)
## Запуск
### Запуск из EDT
При разработке в EDT процесс запуска тестов можно упростить, установив [плагин](https://github.com/bia-technologies/edt-test-runner)
и настроив конфигурацию запуска, как указано в описании плагина.
### Запуск вне EDT
Для запуска тестов без использования EDT необходимо:
1. Сформировать файл конфигурации запуска [вручную](/docs/run), либо воспользоваться [формой настройки](/docs/yaxunit-ui)
2. [Запустить 1С:Предприятие](/docs/run) с параметром `RunUnitTests=ПутьКФайлуКонфигурации.json`.
## Благодарности
Приносим благодарность всему [open-source сообществу 1с](https://github.com/topics/1c-enterprise) за идеи и мотивацию.
Особая благодарность авторам и контрибьютерам проектов
- [xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C/graphs/contributors)
- [vanessa-automation](https://github.com/Pr-Mex/vanessa-automation/graphs/contributors)
- [add](https://github.com/vanessa-opensource/add/graphs/contributors)
---
## Лицензия
Copyright © 2022 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/)
Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB