Skip to content

Commit 84acd57

Browse files
committed
Merge branch 'develop' of https://github.com/artbear/1testrunner into develop
2 parents 334991b + 866998f commit 84acd57

File tree

4 files changed

+191
-15
lines changed

4 files changed

+191
-15
lines changed

readme.md

Lines changed: 123 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
1-
[![Статус Порога Качества](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner&metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=1testrunner) [![Покрытие](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner&metric=coverage)](https://sonar.openbsl.ru/dashboard?id=1testrunner) [![Строки кода](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner&metric=ncloc)](https://sonar.openbsl.ru/dashboard?id=1testrunner) [![GitHub release](https://img.shields.io/github/release/artbear/1testrunner.svg)](https://github.com/artbear/1testrunner/releases) [![Build Status](http://build.oscript.io/buildStatus/icon?job=oscript-library/1testrunner/develop)](http://build.oscript.io/job/oscript-library/job/1testrunner/job/develop/) [![Build status](https://ci.appveyor.com/api/projects/status/7sgdu30u1yqbot4m?svg=true)](https://ci.appveyor.com/project/artbear/1testrunner) [![Build Status](https://travis-ci.org/artbear/1testrunner.svg)](https://travis-ci.org/artbear/1testrunner)
1+
[![Статус Порога Качества](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner&metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=1testrunner)
2+
[![Покрытие](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner&metric=coverage)](https://sonar.openbsl.ru/dashboard?id=1testrunner)
3+
[![Строки кода](https://sonar.openbsl.ru/api/project_badges/measure?project=1testrunner&metric=ncloc)](https://sonar.openbsl.ru/dashboard?id=1testrunner)
4+
[![GitHub release](https://img.shields.io/github/release/artbear/1testrunner.svg)](https://github.com/artbear/1testrunner/releases)
5+
[![Build Status](http://build.oscript.io/buildStatus/icon?job=oscript-library/1testrunner/develop)](http://build.oscript.io/job/oscript-library/job/1testrunner/job/develop/)
6+
[![Build status](https://ci.appveyor.com/api/projects/status/7sgdu30u1yqbot4m?svg=true)](https://ci.appveyor.com/project/artbear/1testrunner)
7+
[![Build Status](https://travis-ci.org/artbear/1testrunner.svg)](https://travis-ci.org/artbear/1testrunner)
28

39
Организовано приемочное тестирование, аналогичное тестированию 1C в проекте [xUnitFor1C](https://github.com/xDrivenDevelopment/xUnitFor1C/wiki)
410

511
Основные принципы работы с тестами для скриптов OneScript описаны в [официальной документации OneScript](http://oscript.io/docs/page/testing)
612

713
# Использование тестирования (выдержка из документации OneScript)
814

9-
## Пример запуска всех приемочных тестов ###
15+
## Пример запуска всех приемочных тестов
1016

1117
Проверить все файлы текущего каталога из командной строки (с паузой, если есть упавшие тесты):
1218

@@ -20,9 +26,9 @@
2026

2127
cmd /c C:\Projects\1script\tests\start-all.cmd . notpause
2228

23-
## Запуск тестов ###
29+
## Запуск тестов
2430

25-
### Формат командной строки:
31+
### Формат командной строки
2632

2733
1testrunner [-command] testfile|testdir [test-id|test-number] [-option [optionData]]
2834

@@ -41,7 +47,7 @@
4147
* `xddReportPath` - формировать отчет тестирования в формате junit-xml
4248
* * [optionData] - полный или относительный путь к каталогу, где формировать файл *.xml
4349

44-
### Примеры:
50+
### Примеры
4551

4652
* `1testrunner -show testfile` - вывод списка тестов
4753
* `1testrunner testfile` или `1testrunner -run testfile` - запуск всех тестов из файла
@@ -51,7 +57,7 @@
5157
* `1testrunner -runall tests` - запуск всех тестов из каталога tests
5258
* `1testrunner -runall tests xddReportPath .` - запуск всех тестов из каталога tests и формирование отчета тестирования в формате junit-xml
5359

54-
### Формат скриптов-тестов
60+
### Формат скриптов-тестов (предопределенные методы)
5561

5662
Тесты находятся в каталоге `tests`
5763

@@ -65,21 +71,125 @@
6571
// основной метод для тестирования
6672
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
6773
68-
юТест = ЮнитТестирование;
74+
юТест = ЮнитТестирование;
6975
70-
ВсеТесты = Новый Массив;
76+
ВсеТесты = Новый Массив;
77+
ВсеТесты.Добавить("ТестДолжен_ПроверитьВерсию");
7178
72-
ВсеТесты.Добавить("ТестДолжен_ПроверитьВерсию");
79+
Возврат ВсеТесты;
80+
КонецФункции
81+
82+
// вызывается 1 раз перед выполнением всех тестов в файле
83+
// для инициализации окружения, общего для всех тестов
84+
//
85+
Процедура ПередЗапускомТестов() Экспорт
86+
87+
КонецПроцедуры
88+
89+
// вызывается перед выполнением каждого тестового метода
90+
// для выполнения общих действий перед каждым тестом
91+
//
92+
Процедура ПередЗапускомТеста() Экспорт
93+
94+
КонецПроцедуры
95+
96+
// вызывается после выполнения каждого тестового метода
97+
// для выполнения общих действий после каждого теста
98+
//
99+
Процедура ПослеЗапускаТеста() Экспорт
100+
101+
КонецПроцедуры
102+
103+
// вызывается 1 раз после выполнения всех тестов в файле
104+
// для выполнения общих действий после всех тестов, например, освобождения ресурсов
105+
//
106+
Процедура ПослеЗапускаТестов() Экспорт
73107
74-
Возврат ВсеТесты;
108+
КонецПроцедуры
109+
110+
Процедура ТестДолжен_ПроверитьВерсию() Экспорт
111+
Утверждения.ПроверитьРавенство("0.1", Версия());
112+
КонецПроцедуры
113+
114+
Функция Версия() Экспорт
115+
Возврат "0.1";
75116
КонецФункции
117+
```
118+
119+
### Формат скриптов-тестов (аннотированные методы)
120+
121+
Для удобства написания тестов возможно использование анотаций методов в файле тестов:
122+
123+
* &Инициализация
124+
* &Завершение
125+
* &Перед
126+
* &После
127+
* &Тест
128+
* &Параметры
76129

130+
См. пример.
131+
132+
```bsl
133+
#Использовать asserts
134+
135+
Перем юТест;
136+
137+
// вызывается 1 раз перед выполнением всех тестов в файле
138+
// для инициализации окружения, общего для всех тестов
139+
// возможно последовательное выполнение нескольких методов с аннотацией &Инициализация
140+
//
141+
&Инициализация
142+
Процедура ПередЗапускомТестов() Экспорт
143+
144+
юТест = ЮнитТестирование;
145+
146+
КонецПроцедуры
147+
148+
// вызывается перед выполнением каждого тестового метода
149+
// для выполнения общих действий перед каждым тестом
150+
// возможно последовательное выполнение нескольких методов с аннотацией &Перед
151+
//
152+
&Перед
153+
Процедура ПередЗапускомТеста() Экспорт
154+
155+
КонецПроцедуры
156+
157+
// вызывается после выполнения каждого тестового метода
158+
// для выполнения общих действий после каждого теста
159+
// возможно последовательное выполнение нескольких методов с аннотацией &После
160+
//
161+
&После
162+
Процедура ПослеЗапускаТеста() Экспорт
163+
164+
КонецПроцедуры
165+
166+
// вызывается 1 раз после выполнения всех тестов в файле
167+
// для выполнения общих действий после всех тестов, например, освобождения ресурсов
168+
// возможно последовательное выполнение нескольких методов с аннотацией &Завершение
169+
//
170+
&Завершение
171+
Процедура ПослеЗапускаТестов() Экспорт
172+
173+
КонецПроцедуры
174+
175+
&Тест
77176
Процедура ТестДолжен_ПроверитьВерсию() Экспорт
78-
Утверждения.ПроверитьРавенство("0.1", Версия());
177+
Утверждения.ПроверитьРавенство("0.1", Версия());
178+
КонецПроцедуры
179+
180+
// возможна передача параметров теста через аннотацию &Параметры
181+
// тест будет вызван для каждого набора параметров
182+
//
183+
&Тест
184+
&Параметры(1, 2, Ложь)
185+
&Параметры(1, 1, Истина)
186+
Процедура ТестДолжен_ВыполнитьсяСПараметрами(ПервоеЗначение, ВтороеЗначение, Ожидание) Экспорт
187+
Результат = (ПервоеЗначение = ВтороеЗначение);
188+
Утверждения.ПроверитьРавенство(Ожидание, Результат);
79189
КонецПроцедуры
80190
81191
Функция Версия() Экспорт
82-
Возврат "0.1";
192+
Возврат "0.1";
83193
КонецФункции
84194
```
85195

@@ -111,6 +221,6 @@
111221

112222
В случае ошибок в тестах/файле будет выдано окно консоли с описанием ошибки.
113223

114-
### Пример запуска всех приемочных тестов ###
224+
### Для запуска всех приемочных тестов в текущем каталоге
115225

116226
1testrunner -runall "$(CURRENT_DIRECTORY)"

src/Классы/testrunner.os

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,8 +463,21 @@
463463

464464
Для Сч = 0 По НаборТестов.Количество() - 1 Цикл
465465
ОписаниеТеста = НаборТестов[Сч];
466+
ПредыдущийКласс = ?(Сч = 0, Неопределено, НаборТестов[Сч - 1].ИмяКласса);
467+
СледующийКласс = ?(Сч = НаборТестов.Количество() - 1, Неопределено, НаборТестов[Сч + 1].ИмяКласса);
468+
469+
Если НЕ ПредыдущийКласс = ОписаниеТеста.ИмяКласса Тогда
470+
НовыйРезультатТестирования = ВыполнитьПередТестами(ОписаниеТеста);
471+
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);
472+
КонецЕсли;
473+
466474
НовыйРезультатТестирования = ВыполнитьПолныйТест(ОписаниеТеста, Сч);
467475
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);
476+
477+
Если НЕ СледующийКласс = ОписаниеТеста.ИмяКласса Тогда
478+
НовыйРезультатТестирования = ВыполнитьПослеТестов(ОписаниеТеста);
479+
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);
480+
КонецЕсли;
468481
КонецЦикла;
469482

470483
ВывестиЛогТестирования();
@@ -785,6 +798,18 @@
785798
Возврат Рез;
786799
КонецФункции
787800

801+
Функция ВыполнитьПередТестами(ОписаниеТеста)
802+
803+
Возврат ВыполнитьПоАннотации(ОписаниеТеста, "инициализация", "ПередЗапускомТестов");
804+
805+
КонецФункции
806+
807+
Функция ВыполнитьПослеТестов(ОписаниеТеста)
808+
809+
Возврат ВыполнитьПоАннотации(ОписаниеТеста, "завершение", "ПослеЗапускаТестов");
810+
811+
КонецФункции
812+
788813
Функция ВыполнитьПередТестом(ОписаниеТеста)
789814

790815
Возврат ВыполнитьПоАннотации(ОписаниеТеста, "перед", "ПередЗапускомТеста");
@@ -1397,7 +1422,7 @@
13971422

13981423
Лог = Логирование.ПолучитьЛог(ИмяЛога());
13991424

1400-
ВыводитьОшибкиПодробно = Ложь;
1425+
ВыводитьОшибкиПодробно = ПолучитьПеременнуюСреды("TESTRUNNER_VERBOSE") = "1";
14011426

14021427
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
14031428

tests/exec-tests-by-lib.os

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
Возврат ВсеТесты;
2121
КонецФункции
2222

23-
Процедура ПередЗапускомТеста() Экспорт
23+
Процедура ПередЗапускомТестов() Экспорт
2424
ВремТестер = Новый Тестер;
2525
Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
26+
КонецПроцедуры
27+
28+
Процедура ПередЗапускомТеста() Экспорт
2629

2730
КонецПроцедуры
2831

tests/fixtures/annotation.os

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,21 @@
22

33
Перем юТест;
44
Перем Счетчик;
5+
Перем ФайлИнициализации;
6+
Перем КонтрольноеЗначение;
57

8+
&Инициализация
9+
Процедура ПередЗапускомТестов() Экспорт
10+
11+
ФайлИнициализации = ПолучитьИмяВременногоФайла("init");
12+
КонтрольноеЗначение = СтрШаблон("init_%1", Новый УникальныйИдентификатор());
13+
14+
Текст = Новый ТекстовыйДокумент();
15+
Текст.УстановитьТекст(КонтрольноеЗначение);
16+
Текст.Записать(ФайлИнициализации);
17+
18+
Сообщить(СтрШаблон("Инициализированы тесты ""%1""", ТекущийСценарий().Источник));
19+
КонецПроцедуры
620

721
&Перед
822
Процедура ПередЗапускомТеста() Экспорт
@@ -24,6 +38,30 @@
2438
Сообщить("ТестОкончил");
2539
КонецПроцедуры
2640

41+
&Завершение
42+
Процедура ПослеЗапускаТестов() Экспорт
43+
Текст = Новый ТекстовыйДокумент();
44+
Текст.Прочитать(ФайлИнициализации);
45+
Значение = СокрЛП(Текст.ПолучитьТекст());
46+
47+
Утверждения.ПроверитьРавенство(Значение, КонтрольноеЗначение);
48+
49+
УдалитьФайлы(ФайлИнициализации);
50+
51+
Сообщить(СтрШаблон("Завершены тесты ""%1""", ТекущийСценарий().Источник));
52+
КонецПроцедуры
53+
54+
&ЗавершеНИе
55+
Процедура ПослеЗапускаТестовВторойРаз() Экспорт
56+
57+
КонтрольныйФайл = Новый Файл(ФайлИнициализации);
58+
59+
Утверждения.ПроверитьЛожь(КонтрольныйФайл.Существует());
60+
61+
Сообщить(СтрШаблон("Совсем завершены тесты ""%1""", ТекущийСценарий().Источник));
62+
63+
КонецПроцедуры
64+
2765
&Тест
2866
Процедура ТестДолжен_ПроверитьВерсию() Экспорт
2967
Утверждения.ПроверитьРавенство("0.1", Версия());

0 commit comments

Comments
 (0)