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

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


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



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


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

Для работы скриптов необходим установленный Питон.
Рекомендуется версия 2.4 или выше.
На 2.3.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
	4) Апдейты и коммиты
Апдейты и коммиты файлов 1С - не такой простой вопрос, как кажется. Желающие
могут всегда в этом убедиться.
Для упрощения процедуры обновления файлов добавлен файл
		Update_ExtFiles.BAT.
Использование этого файла позволяет избежать многих ошибок и потерь информации,
возникающих при ручном выполнении обновления. Однако, использование этого файла
не решает всех проблем. Следует помнить, что файлы, открытые в вашем
конфигураторе, автоматически не обновляются, поэтому их следует закрыть и
открыть заново.
Перед выполнением коммита следует выполнить обновление с помощью указанного
файла. Если в тех файлах, которые вы собирались коммитить произлшли изменения,
то следует заново прогнать тесты перед выполнением коммита. Хотя на самом деле
желательно прогнать тесты, даже если при обновлении изменились любые файлы.

Файлы конфигурации и базы данных не обновляются указанным файлом. Однако, при
их обновлении следует использовать тот же цикл: разборка-обновление-сборка.


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

---
	Подготовка новых тестов
---
Все тесты находятся в папке 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С++