Элементы управления ActiveX в VB значительно экономят время, однако они являются основой эффективной разработки, управляемой тестами.
Для эффективного тестирования всего приложения VB6, в идеале, вам необходим проект, в котором EXE представляет собой тонкую оболочку над ActiveX DLL, которая выполняет всю работу. Формы реализуют интерфейс и регистрируются в DLL. Поэтому, если у вас есть Форма ввода заказа, он реализует этот интерфейс IOrderEntryForm, а его события будут вызывать методы класса OrderEntry, расположенного в диалоговом окне MyAppUI.
Чтобы подчеркнуть в Visual Basic 6, FORMS может ОСУЩЕСТВЛЯТЬ интерфейс. Затем форма регистрируется с помощью класса UI в событии LOAD. События формы (например, MyButton_Click) вызывают методы класса UI. Класс пользовательского интерфейса, использующий методы интерфейса формы, чтобы изменить отображаемое. Это дополнительная работа, но она экономит много времени на тестирование. Также обслуживание, поскольку вы можете изменить внешний вид формы, пока реализованный интерфейс остается прежним.
Это также означает, что перед тем, как что-то вроде MYEXE-> MyActiveXDLL превратится в MYEXE-> MyUIDLL-> MyActiveXDLL.
Для вашей тестовой среды вы создаете ActiveX DLL, которая макетирует пользовательский интерфейс, создавая классы, которые реализуют различные интерфейсы форм. UI DLL не знает разницы, и вы полностью контролируете, какие входные данные отправляются и что вы читаете.
Обратите внимание, что об этом типе шаблона проектирования говорится здесь . Я использовал его как основу для разработки и поддержки приложения CAD / CAM моей компании для металлорежущих станков.
Сторонние элементы управления ActiveX - это проклятие этой схемы. Это потому, что код, выполняющий тяжелую работу, находится внутри самого элемента управления. Чем сложнее элемент управления ActiveX, тем хуже проблема. Тенденция в моей компании состоит в том, чтобы уменьшить нашу зависимость от сторонних контролей в пользу внутренних приложений.
Однако, как и в случае с любым алгоритмом и схемой проектирования, это включает в себя оценочный вызов. Сколько проблем вы получаете в областях вашего программного обеспечения, связанных с управлением расширенным текстом. Если не так много, вы, вероятно, можете избежать использования сценария тестирования, как ручного, так и автоматического (т. Е. Отправка нажатий клавиш в приложение), и использовать остальную часть модульного теста.
Критическим элементом использования модульного тестирования вашего ВСЕГО приложения является наполнение его как можно большим количеством интерфейсов. Просто сделайте то, что вы можете сейчас, и запишите области, которые вы хотите изменить, когда будете заниматься дальнейшим развитием. Не отчаивайтесь, если у вас нет 100% покрытия сразу или даже на следующий год.