{"id":16372650,"url":"https://github.com/artbear/1testrunner","last_synced_at":"2026-02-09T11:34:30.655Z","repository":{"id":56439040,"uuid":"65578928","full_name":"artbear/1testrunner","owner":"artbear","description":"Юнит-тестирование для OneScript","archived":false,"fork":false,"pushed_at":"2025-02-12T07:32:30.000Z","size":187,"stargazers_count":7,"open_issues_count":14,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-12T08:44:54.638Z","etag":null,"topics":["junit-xml","oscript","testing","unit-testing"],"latest_commit_sha":null,"homepage":"https://oscript.io","language":"1C Enterprise","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artbear.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-12T19:38:02.000Z","updated_at":"2025-02-12T07:32:35.000Z","dependencies_parsed_at":"2024-12-31T17:36:52.620Z","dependency_job_id":null,"html_url":"https://github.com/artbear/1testrunner","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artbear%2F1testrunner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artbear%2F1testrunner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artbear%2F1testrunner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artbear%2F1testrunner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artbear","download_url":"https://codeload.github.com/artbear/1testrunner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239921876,"owners_count":19718842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["junit-xml","oscript","testing","unit-testing"],"created_at":"2024-10-11T03:12:03.262Z","updated_at":"2026-02-09T11:34:30.645Z","avatar_url":"https://github.com/artbear.png","language":"1C Enterprise","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Статус Порога Качества](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner\u0026metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=1testrunner)\r\n[![Покрытие](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner\u0026metric=coverage)](https://sonar.openbsl.ru/dashboard?id=1testrunner)\r\n[![Строки кода](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner\u0026metric=ncloc)](https://sonar.openbsl.ru/dashboard?id=1testrunner)\r\n[![GitHub release](https://img.shields.io/github/release/artbear/1testrunner.svg)](https://github.com/artbear/1testrunner/releases)\r\n[![Build Status](http://build.oscript.io/buildStatus/icon?job=oscript-library/1testrunner/develop)](http://build.oscript.io/job/oscript-library/job/1testrunner/job/develop/)\r\n[![Build status](https://ci.appveyor.com/api/projects/status/7sgdu30u1yqbot4m?svg=true)](https://ci.appveyor.com/project/artbear/1testrunner)\r\n[![Build Status](https://travis-ci.org/artbear/1testrunner.svg)](https://travis-ci.org/artbear/1testrunner)\r\n\r\nОрганизовано приемочное тестирование, аналогичное тестированию 1C в проекте [xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki)\r\n\r\nОсновные принципы работы с тестами для скриптов OneScript описаны в [официальной документации OneScript](http://oscript.io/docs/page/testing)\r\n\r\n# Использование тестирования (выдержка из документации OneScript)\r\n\r\n## Пример запуска всех приемочных тестов\r\n\r\nПроверить все файлы текущего каталога из командной строки (с паузой, если есть упавшие тесты):\r\n\r\n    cmd /c C:\\Projects\\1script\\tests\\start-all.cmd .\r\n\r\nПроверить все файлы текущего каталога из командной строки (без паузы, если есть упавшие тесты):\r\n\r\n    1testrunner -runall \"ТекущийКаталог\" xddReportPath \"ТекущийКаталог\"\r\n\r\nили\r\n\r\n    cmd /c C:\\Projects\\1script\\tests\\start-all.cmd . notpause\r\n\r\n## Запуск тестов\r\n\r\n### Формат командной строки\r\n\r\n    1testrunner [-command] testfile|testdir [test-id|test-number] [-option [optionData]]\r\n\r\nили\r\n\r\n    oscript \u003cкаталог 1testrunner\u003e/src/main.os [-command] testfile|testdir [test-id|test-number] [-option [optionData]]\r\n\r\n### Виды команд\r\n\r\n* `-show` - вывод доступных тестов с именами тестов и номерами тестов по порядку объявления\r\n* `-run` - прогон всех тестов из файла теста или одного конкретного теста, уточненного по номеру или наименованию\r\n* `-runall` - прогон всех тестов из каталога, в т.ч. и из вложенных каталогов\r\n\r\n### Виды режимов\r\n\r\n* `xddReportPath` - формировать отчет тестирования в формате junit-xml\r\n* * [optionData] - полный или относительный путь к каталогу, где формировать файл *.xml\r\n\r\n### Примеры\r\n\r\n* `1testrunner -show testfile` - вывод списка тестов\r\n* `1testrunner testfile` или `1testrunner -run testfile` - запуск всех тестов из файла\r\n* `1testrunner -run testfile 5` или `1testrunner testfile 5` - запуск теста №5\r\n* `1testrunner -run testfile \"Тест1\"` или `1testrunner testfile \"Тест1\"`- запуск теста с именем Тест1\r\n\r\n* `1testrunner -runall tests` - запуск всех тестов из каталога tests\r\n* `1testrunner -runall tests xddReportPath .` - запуск всех тестов из каталога tests и формирование отчета тестирования в формате  junit-xml\r\n\r\n### Формат скриптов-тестов (предопределенные методы)\r\n\r\nТесты находятся в каталоге `tests`\r\n\r\nПример скрипта-теста находится в `tests\\example-test.os` :\r\n\r\n```bsl\r\n#Использовать asserts\r\n\r\nПерем юТест;\r\n\r\n// основной метод для тестирования\r\nФункция ПолучитьСписокТестов(ЮнитТестирование) Экспорт\r\n\r\n    юТест = ЮнитТестирование;\r\n\r\n    ВсеТесты = Новый Массив;\r\n    ВсеТесты.Добавить(\"ТестДолжен_ПроверитьВерсию\");\r\n\r\n    Возврат ВсеТесты;\r\nКонецФункции\r\n\r\n// вызывается 1 раз перед выполнением всех тестов в файле\r\n// для инициализации окружения, общего для всех тестов\r\n//\r\nПроцедура ПередЗапускомТестов() Экспорт\r\n\r\nКонецПроцедуры\r\n\r\n// вызывается перед выполнением каждого тестового метода\r\n// для выполнения общих действий перед каждым тестом\r\n//\r\nПроцедура ПередЗапускомТеста() Экспорт\r\n\r\nКонецПроцедуры\r\n\r\n// вызывается после выполнения каждого тестового метода\r\n// для выполнения общих действий после каждого теста\r\n//\r\nПроцедура ПослеЗапускаТеста() Экспорт\r\n\r\nКонецПроцедуры\r\n\r\n// вызывается 1 раз после выполнения всех тестов в файле\r\n// для выполнения общих действий после всех тестов, например, освобождения ресурсов\r\n//\r\nПроцедура ПослеЗапускаТестов() Экспорт\r\n\r\nКонецПроцедуры\r\n\r\nПроцедура ТестДолжен_ПроверитьВерсию() Экспорт\r\n    Утверждения.ПроверитьРавенство(\"0.1\", Версия());\r\nКонецПроцедуры\r\n\r\nФункция Версия() Экспорт\r\n    Возврат \"0.1\";\r\nКонецФункции\r\n```\r\n\r\n### Формат скриптов-тестов (аннотированные методы)\r\n\r\nДля удобства написания тестов возможно использование анотаций методов в файле тестов:\r\n\r\n* \u0026Инициализация\r\n* \u0026Завершение\r\n* \u0026Перед\r\n* \u0026После\r\n* \u0026Тест\r\n* \u0026Параметры\r\n\r\nСм. пример.\r\n\r\n```bsl\r\n#Использовать asserts\r\n\r\nПерем юТест;\r\n\r\n// вызывается 1 раз перед выполнением всех тестов в файле\r\n// для инициализации окружения, общего для всех тестов\r\n// возможно последовательное выполнение нескольких методов с аннотацией \u0026Инициализация\r\n//\r\n\u0026Инициализация\r\nПроцедура ПередЗапускомТестов() Экспорт\r\n\r\n    юТест = ЮнитТестирование;\r\n\r\nКонецПроцедуры\r\n\r\n// вызывается перед выполнением каждого тестового метода\r\n// для выполнения общих действий перед каждым тестом\r\n// возможно последовательное выполнение нескольких методов с аннотацией \u0026Перед\r\n//\r\n\u0026Перед\r\nПроцедура ПередЗапускомТеста() Экспорт\r\n\r\nКонецПроцедуры\r\n\r\n// вызывается после выполнения каждого тестового метода\r\n// для выполнения общих действий после каждого теста\r\n// возможно последовательное выполнение нескольких методов с аннотацией \u0026После\r\n//\r\n\u0026После\r\nПроцедура ПослеЗапускаТеста() Экспорт\r\n\r\nКонецПроцедуры\r\n\r\n// вызывается 1 раз после выполнения всех тестов в файле\r\n// для выполнения общих действий после всех тестов, например, освобождения ресурсов\r\n// возможно последовательное выполнение нескольких методов с аннотацией \u0026Завершение\r\n//\r\n\u0026Завершение\r\nПроцедура ПослеЗапускаТестов() Экспорт\r\n\r\nКонецПроцедуры\r\n\r\n\u0026Тест\r\nПроцедура ТестДолжен_ПроверитьВерсию() Экспорт\r\n    Утверждения.ПроверитьРавенство(\"0.1\", Версия());\r\nКонецПроцедуры\r\n\r\n// возможна передача параметров теста через аннотацию \u0026Параметры\r\n// тест будет вызван для каждого набора параметров\r\n//\r\n\u0026Тест\r\n\u0026Параметры(1, 2, Ложь)\r\n\u0026Параметры(1, 1, Истина)\r\nПроцедура ТестДолжен_ВыполнитьсяСПараметрами(ПервоеЗначение, ВтороеЗначение, Ожидание) Экспорт\r\n    Результат = (ПервоеЗначение = ВтороеЗначение);\r\n    Утверждения.ПроверитьРавенство(Ожидание, Результат);\r\nКонецПроцедуры\r\n\r\nФункция Версия() Экспорт\r\n    Возврат \"0.1\";\r\nКонецФункции\r\n```\r\n\r\n### Механизм работы с временными файлами\r\n\r\nВ `1testrunner` встроен механизм работы с временными файлами.\r\nУдобен для автосоздания и автоудаления файлов после выполнения тестов.\r\nВызывать через `юТест`.\r\n\r\nМетоды:\r\n\r\n* **ИмяВременногоФайла**() - возвращается имя временного файла и имя фиксируется для дальнейшего удаления\r\n* **УдалитьВременныеФайлы**() - удаляются все зарегистрированные ранее временные файлы\r\n* * Удобно этот метод использовать в 'ПослеЗапускаТеста'\r\n\r\nПример использования методов находятся в тесте temp-files.os\r\n\r\n## Запуск тестирования из Notepad++\r\n\r\n### Для прогона тестов из текущего открытого файла скрипта\r\n\r\nв Notepad++ (в т.ч. и для плагина NppExec) можно использовать следующую команду:\r\n\r\n ```sh\r\n    cmd.exe /c C:\\Projects\\1script\\tests\\start.cmd \"$(FULL_CURRENT_PATH)\"\r\n ```\r\n \r\nили\r\n\r\n```sh\r\n1testrunner -run \"$(FULL_CURRENT_PATH)\"\r\n```\r\n\r\nВ случае ошибок в тестах/файле будет выдано окно консоли с описанием ошибки.\r\n\r\n### Для запуска всех приемочных тестов в текущем каталоге\r\n\r\n```sh\r\n1testrunner -runall \"$(CURRENT_DIRECTORY)\"\r\n```\r\n\r\n## Запуск тестирования из Visual Studio Code (VSC)\r\n\r\n### Работа с отладкой \r\n\r\n1. Для возможности отладки должен быть установлен набор расширений: 1C (BSL) Extension Pack. \r\n\r\n2. Чтобы запускать и отлаживать можно настроить launch.json в репозитарии своего проекта в VSC.  Далее можно выбрать любой файл тестов с расширением *.os и нажать F5 для запуска с отладкой.\r\n\r\nПример настройки для Windows `.vscode/launch.json`:\r\n\r\n```JSON\r\n{\r\n    \"version\": \"0.2.0\",\r\n    \"configurations\": [\r\n        {\r\n            \"name\": \"Запуск тестов 1testrunner\",\r\n            \"type\": \"oscript\",\r\n            \"request\": \"launch\",\r\n            \"program\": \"c:\\\\Program Files\\\\OneScript\\\\lib\\\\1testrunner\\\\src\\\\main.os\",\r\n            \"args\": [\"-run\", \"${file}\"],\r\n            \"cwd\": \"${workspaceFolder}\",\r\n            \"env\": {},\r\n            \"runtimeExecutable\": null,\r\n            \"runtimeArgs\": [],\r\n            \"debugPort\": 2801\r\n        }\r\n    ]\r\n}\r\n```\r\n\r\n3. В момент отладки можно эффективно дорабатывать и расширять функционал разрабатываемого приложения и сразу теста. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartbear%2F1testrunner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartbear%2F1testrunner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartbear%2F1testrunner/lists"}