diff --git a/.github/workflows/deploy-documentation.yml b/.github/workflows/deploy-documentation.yml new file mode 100644 index 00000000..73bca737 --- /dev/null +++ b/.github/workflows/deploy-documentation.yml @@ -0,0 +1,40 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - develop + # Review gh actions docs if you want to further define triggers, paths, etc + # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on + +jobs: + deploy: + name: Deploy to GitHub Pages + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + - name: Build website + run: yarn build + + # Popular action to deploy to GitHub Pages: + # Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + # Build output to publish to the `gh-pages` branch: + publish_dir: ./build + # The following lines assign commit authorship to the official + # GH-Actions bot for deploys to `gh-pages` branch: + # https://github.com/actions/checkout/issues/13#issuecomment-724415212 + # The GH actions bot is used by default if you didn't specify the two fields. + # You can swap them out with your own user credentials. + user_name: github-actions[bot] + user_email: 41898282+github-actions[bot]@users.noreply.github.com \ No newline at end of file diff --git a/README.md b/README.md index 1e4ba3d9..553108a1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ![](documentation/static/img/logo.png) YAXUnit. Расширение для запуска тестов +# ![Logo](documentation/static/img/logo.png) YAXUnit. Расширение для запуска тестов ---- @@ -8,171 +8,13 @@ [![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/api-topic.md). - -А для того, что бы начать писать тесты необходимо [установить расширение](docs/install.md) в свою 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)) получаем такой отчет: - -![Отчет](docs/images/report.PNG) - -## Запуск - -### Запуск из EDT - -При разработке в EDT процесс запуска тестов можно упростить, установив [плагин](https://github.com/bia-technologies/edt-test-runner) -и настроив конфигурацию запуска, как указано в описании плагина. - -### Запуск вне EDT - -Для запуска тестов без использования EDT необходимо: - -1. Сформировать файл конфигурации запуска [вручную](docs/run.md), либо воспользоваться [формой настройки](docs/yaxunit-ui.md) -2. [Запустить 1С:Предприятие](docs/run.md) с параметром `RunUnitTests=ПутьКФайлуКонфигурации.json`. +[https://bia-technologies.github.io/yaxunit/](https://bia-technologies.github.io/yaxunit/) ## Благодарности