Документация по работе с тестовой базой

Структура папок
1CPP_Testing - Каталог тестовой ИБ.
        Testing - каталог с репозиторием
                Config - тут лежит конфа, разобранная жкомпом
                scripts - тут лежат скрипты сборки/разборки, их и высылаю.


                        dbfpy - папка, где лежит сторонняя библиотека сборки/разборки dbf в текст и обратно, прикладываю:



                        oc_scripts - в этой папке лежит слегка подредактированный скрипт autoload для опенконфа.


                TestDB - тут лежат файлы тестовой базы данных, в текстовом виде
                Tests - это тесты Фанктеста
                UnitTests - тут описания и сами классы юниттестирования конфигурации в виде txt и prm файлов.
                ExtForms - тут внешние файлы и классы в виде txt, ert и прочих файлов.

Для работы скриптов необходим установленный Питон. Я использовал версию 2.2.3

---
Схема работы.
---

Создаем папку для базы данных, например, 1CPP_Testing.
В эту папку заносим папку "Testing" из репозитария.
В папке Testing\Scripts из файла scripts.ini.example
 создаем новый файл scripts.ini, где прописываем путь к бинарнику 1С.

Запускаем Testing\Scripts\compile_all.py
Для папки 1CPP_Testing появляется окно 1С с выбором новой базы "ИнформБаза",
создаем базу в 1С, нажимаем ОК,
заходим в Конфигуратор,
на вопрос 1С о кодовой странице 1251 ответ ОК
При первой загрузке конфигуратора загружаю
конфигурацию Testing\Scripts\1cv7new.md как измененную, сохраняем конфу,
создаем словарь данных (dd-файл),
выходим из Конфигуратора.
Далее Конфигуратор запускается второй раз,
выполняется переиндексация и необходимые пересчеты ссылок.

Все, главная работа выполнена.

Можно запускать 1С-Предприятие.
При запуске 1С сразу запускается обработка тестирования, которая загружает 1С++
через ЗагрузитьВнешнююКомпоненту, и начинается юнит-тестирование.

---
В дальнейшей работе несколько этапов
---

1) Сборка конфы.
Запускаем скрипт Testing\Scripts\compile_all.py.
2) Тестирование 1С++
Просто запуск этой конфы в режиме 1С-Предприятие.
3) Разборка конфы
Запускаем скрипт Testing\Scripts\decompile_all.py.
Ну когда нужно апдейтить и коммитить, вы сами знаете.
ЗЫ один вопрос - создание новых метаданных.
Будьте внимательны при коммитах файлов *.mdp и файла ОбъектыМетаданных.txt

ОСНОВНОЕ ТРЕБОВАНИЕ
----------------
НЕ ЗАЛИВАЙТЕ ИЗМЕНЕНИЯ в репозитарий в основной ствол,
ПОКА ВСЕ ТЕСТЫ не будут правильно проходить.
По крайней мере количество непрошедших тестов после Вашего коммита
не должно увеличиться :)
----------------

---
	Подготовка новых тестов
---
Все тесты находятся в папке Testing\UnitTests и расположены по разделам
1С++. Каждому из разделов соответствует своя подпапка.
Например, SpecialClasses
Новые тесты желательно также располагаться по разделам!

Также можно свои классы, а также внешние обработки/отчеты располагать в
КаталогИБ\ExtForms

При добавлении нового теста изменяем в папке UnitTests\SpecialClasses
1) файл определения теста, например,
UnitTests\SpecialClasses\ВыполняемыйМодульТесты.txt
или делаем новый файл, например, ИТТесты.txt или ТестыИТ.txt
_____________________________
		!! В А Ж Н О !!

В список тестируемых классов попадаются только классы,  у которых
в начале и в конце названия есть слово ! "Тесты" !.
Т.е. правильно ДелегатТесты.txt или ТестыДелегат.txt
неправильно ТестДелегата.txt
_____________________________

2) Создаем новую тест - это процедура без параметров,
имя которой должно начинаться на ! "тест" !.
Например, "тестПересечение".
Не забываем поставить признак "Экспорт" :)
Процедура тестПересечение() Экспорт
КонецПроцедуры

3) далее в файле описания классов defcls.prm (в той же папке UnitTests\SpecialClasses)
прописываем новый класс, не забываем наследовать его от класса
"ТестовыйСлучайСДанными" (или просто "ТестовыйСлучай")

ВАЖНО. новую процедуру в этот файлик добавлять НЕ НУЖНО !! достаточно
описать класс и выполнить п.1 и п.2

Например,
class ИТТесты = ИТТесты.txt : ТестовыйСлучайСДанными
{
}

4) Для правильного написания тестов рекомендую изучить интерфейс класса
"ТестовыйСлучай",  а также можно поучиться по готовым тестам.

---
TODO
---

-) добавить тесты на все нерешенные баги из багзиллы

-) добавить тесты на неверный синтаксис

-) ну и само собой, добавлять тесты по классам 1С++